由于code::blocks与Visual C++的相似性,很容易上手,本博文主要摘记Ubuntu下使用code::blocks编码的技巧,其他IDE暂时不讨论。
sudo apt-get install build-essential
sudo apt install codeblocks
sudo apt-get install codeblocks-contrib(不安装此包,可能会没有incrementalsearch等众多功能)
sudo apt install libboost-all-dev(安装boost包,此步骤非必须)
sudo apt-get install libgmp10 libgmp-dev
sudo apt-get install libgmpxx4ldbl-dbgsym
sudo apt-get install libgmp10-dbgsym
信息:
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
将代码复制到工程目录下,为了避免修改他人代码中include的头文件的路径,可在project→build option→search directories增加工程的绝对路径
将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-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版本信息,则说明安装成功
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;
}
内存溢出会导致一些很奇怪的错误(如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是跟入子进程。
1. 开始:gdb 程序名
2. 带参数:run 参数
3. 设置断点:break 断点信息
4. 调试:continue一直执行到断点,next执行一步不进入子函数,step执行一步进行子函数