Ubuntu下C/C++编程技巧摘记

由于code::blocks与Visual C++的相似性,很容易上手,本博文主要摘记Ubuntu下使用code::blocks编码的技巧,其他IDE暂时不讨论。

安装code::blocks

sudo apt-get install build-essential

sudo apt install codeblocks

sudo apt-get install codeblocks-contrib(不安装此包,可能会没有incrementalsearch等众多功能

 sudo apt install libboost-all-dev(安装boost包,此步骤非必须)

安装gmp

sudo apt-get install libgmp10 libgmp-dev

sudo apt-get install libgmpxx4ldbl-dbgsym

sudo apt-get install libgmp10-dbgsym

信息:

https://launchpad.net/ubuntu/+source/gmp

gmp package in Ubuntu

libgmp-dev: Multiprecision arithmetic library developers tools
libgmp10: Multiprecision arithmetic library
libgmp10-dbgsym: debug symbols for package libgmp10
libgmp10-doc: Multiprecision arithmetic library example code
libgmp3-dev: Multiprecision arithmetic library developers tools
libgmpxx4ldbl: Multiprecision arithmetic library (C++ bindings)
libgmpxx4ldbl-dbgsym: debug symbols for package libgmpxx4ldbl

code::blocks中使用他人的源代码

将代码复制到工程目录下,为了避免修改他人代码中include的头文件的路径,可在project→build option→search directories增加工程的绝对路径

code::blocks中使用gmp及其他静态库

将project→build option→linker settings增加libgmpxx和libgmp(静态库的名称),可能debug和release下都需要增加

库介绍
名称 位置 库名
gmp   libgmpxx、libgmp
boost::program_options /usr/lib/x86_64-linux-gnu libboost_program_options
zlib /usr/lib/x86_64-linux-gnu libz

安装cmake

准备工作:官网下载cmake-3.6.3.tar.gz(https://cmake.org/download/)

1.解压文件tar -xvf cmake-3.6.3.tar.gz,并修改文件权限chmod -R 777 cmake-3.6.3

2.检测gcc和g++是否安装,如果没有则需安装gcc-g++:sudo apt-get install build-essential(或者直接执行这两条命令sudo apt-get install gcc,sudo apt-get install g++)

3.进入cmake-3.6.3 进入命令 cd cmake-3.6.3

4.执行sudo ./bootstrap

5.执行sudo make

6.执行 sudo make install

7.执行 cmake –version,返回cmake版本信息,则说明安装成功

code::blocks使用C++11

project→build option→compiler settings→compiler flags勾选have g++ follow C++ 11 ISO C++ language standard

获取系统状态

使用sysinfo函数,使用方法举例如下:

#include 

double Free_Memo_Ratio()
{
    struct sysinfo info;
    sysinfo(&info);
    return 1.0 * info.freeram / info.totalram;
}

使用valgrind查内存泄漏

内存溢出会导致一些很奇怪的错误(如vector申请不了空间,释放内存错误等)

命令示例1:

valgrind --leak-check=full --show-leak-kinds=all --track-fds=yes bin/Debug/program

其中–leak-check=full 指的是完全检查内存泄漏,注意用Debug而非Release能更好地显示错误位置。

命令示例2:

valgrind --leak-check=full --show-leak-kinds=all --track-fds=yes bin/Debug/program

命令示例3:

valgrind --tool=memcheck --leak-check=full --show-reachable=yes --trace-children=yes    ./program

其中–show-reachable=yes是显示所有内存情况,–trace-children=yes是跟入子进程。

使用GDB进行调试

1. 开始:gdb 程序名

2. 带参数:run 参数

3. 设置断点:break 断点信息

4. 调试:continue一直执行到断点,next执行一步不进入子函数,step执行一步进行子函数
 

 

 

 

 

 

你可能感兴趣的:(编程技巧,Ubuntu)