哪些网站做任务可以赚钱的网站的建设意见
-  
G++重要编译参数
- -g(GDB调试) 
- -g选项告诉gcc产生能被GNU调试器GDB使用的调试信息,以调试程序
 - 编译带调试信息的可执行文件
 - g++ -g hello.c -o hello
 
 - 编译过程: 
- -E(预处理) 
- g++ -E hello.c -o hello.i
 
 - -S(编译) 
- g++ -S hello.i -o hello.s
 
 - -c(汇编) 
- g++ -c hello.s -o hello.o
 
 - 链接 
- g++ hello.o -o hello
 
 
 - -E(预处理) 
 - -O[n] 
- 优化源代码
 - -O0:表示不做优化
 - -O1:为默认优化
 - -O2:除了完成-O1的优化之外,还进行一些额外的优化工作,如指令调整等(一般使用这个即可满足要求)
 - g++ -O2 hello.c -o hello
 
 - time 
- time ./hello  
- 可以带引该可执行文件的执行时间
 
 
 - time ./hello  
 - -l(指定库文件、-L(指定库文件路径) 
- 在/lib、/usr/lib及/usr/local/lib里的库直接-l参数就能链接 
- 例:链接glog库 
- g++ -lglog hello.c -o hello
 
 
 - 例:链接glog库 
 - 如果库文件没放在以上三个目录里,需要使用-L参数指定库文件所在目录 
- 例 
- g++ -L/home/wangxianyue/hellolibfolder -lhello hello.c -o hello
 
 
 - 例 
 
 - 在/lib、/usr/lib及/usr/local/lib里的库直接-l参数就能链接 
 - -I(指定头文件搜索目录) 
- /usr/include一般是不用指定的,gcc知道去;但如果头文件不在这里,就需要使用-I参数进行指定了。 
- 例:头文件放在当前目录中 
- g++ -ImyInclude hello.c -o hello
 
 
 - 例:头文件放在当前目录中 
 
 - /usr/include一般是不用指定的,gcc知道去;但如果头文件不在这里,就需要使用-I参数进行指定了。 
 - -Wall(打印警告信息) 
- g++ -Wall hello.c -o hello
 
 - -w(关闭打印信息) 
- g++ -w hello.c -o hello
 
 - -std=c++11(设置编译标准) 
- g++ -std=c++11 hello.cpp -o hello
 
 - -o(指定输出文件名) 
- g++ hello.c -o hello
 
 - -D(定义宏) 

- g++ -DDEBUG hello.c -o hello
 
 
 - -g(GDB调试) 
 -  
g++命令行编译(命令实战)
- -I命令(直接编译)

 - 生成库文件并编译 
- 1. 生成静态库(编译时链接) 
- 步骤1:先进入src目录下

 - 步骤2:先生成.o的汇编文件

 - 步骤3:生成静态库libSwap.a

 - 步骤4:回到上级目录

 - 步骤5:链接,生成可执行文件static_main(-l会自动省略lib及.a,故直接输入-lSwap即可)

 - 步骤6:运行static_main即可(./static_main)
 
 - 步骤1:先进入src目录下
 - 生成动态库(运行时链接) 
- 步骤1:进入src目录下

 - 步骤2:生成动态库libSwap.so

 - 步骤3:回到上级目录

 - 步骤4:链接,生成可执行文件dynamic_main

 - 步骤5:运行

 
 - 步骤1:进入src目录下
 -  
常用调试命令参数
- GDB调试器: 
- 用来调试C/C++程序的功能强大的调试器,是linxu系统开发C/C++最常用的调试工具
 - 程序员可以使用GDB来跟踪程序中的错误,从而减少程序员的工作量
 - linxu开发C/C++一定要熟悉GDB
 - VScode是通过调用GDB调试器来实现C/C++的调试工作的
 - Windows系统中,常用的集成开发环境(IDE),如VS,VC等,他们内部已经嵌套了相应的调试器
 
 - GDB主要功能: 
- 设置断点(断点可以使条件表达式)
 - 使程序在指定的代码上暂停执行,便于观察
 - 单步执行程序,便于调试
 - 查看程序中变量值的变化
 - 动态改变程序的执行环境
 - 分析崩溃程序产生的core文件
 
 - 常用调试命令参数 
- 调试开始:执行gdb exefilename,进入gdb调试工具,其中exefilename为要调试的可执行文件名
 - 参数 
- help(h):查看命令帮助,具体命令查询在gdb中输入help + 命令
 - run(r):重新开始运行文件
 - start:单步执行,运行程序,停在第一行执行语句
 - list(l):查看源代码,(list n:从第n行开始查看代码;list 函数名:查看具体函数)
 - set:设置变量的值
 - next(n):单步调试(逐过程,函数直接执行)
 - step(s):单步调试(逐语句,跳入自定义函数内部执行)
 - backtrace(bt):查看函数的调用的栈帧和层级关系
 - frame(f):切换函数的栈帧
 - info(i):查看函数内部局部变量的数值
 - finish:结束当前函数,返回到函数调用点
 - continue(c):继续执行(跳到下一个断点)
 - print(p):打印值及地址
 - quit(q):退出调试
 - break+num(b):在第num行设置断点
 - info breakpoints:查看当前设置的所有断点
 - delete breakpoints num(d):删除第num个断点
 - display:追踪查看具体变量值
 - undisplay:取消追踪观察变量
 - watch:被设置观察点的变量发生修改时,打印显示
 - i watch:显示观察点
 - enable breakpoints:启用断点
 - disable breakpoints:禁用断点
 - x:查看内存
 - run argv[1] argv[2]:调试时命令行传参
 - set follow-fork-mode child:#Makefile项目管理,选择跟踪父子进程(fork())
 
 - Tips: 
- 编译程序时,需要加上-g参数,之后才能进行gdb调试,gcc -g hello.c -o hello
 - 回车键,重复上一命令
 
 
 
 - GDB调试器: 
 
 - 1. 生成静态库(编译时链接) 
 
 - -I命令(直接编译)
 
