`
ipjmc
  • 浏览: 702892 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

GCC笔记

阅读更多

GCC 编译流程:

 

GCC在编译C/C++程序时,会经过一下4步
1.预处理
gcc -E hello.c -o hello.i
 
2.编译
gcc -S hello.i -o hello.s
 
3.汇编
gcc -c hello.s -o hello.o
 
4.链接
gcc hello.o -o hello
 
 
一步到位方法:gcc hello.c -o hello
 
 
常用的编译选项:
-I dir
Linux中默认的头文件都放在/usr/include目录下,如果用户希望添加其他位置的头文件的时候,需要通过"-I dir"来指定
eg.
gcc hello.c -I /root/workspace/include/ -o hello
 
-L dir
添加库文件的搜索路径
eg.使用动态库/root/workspace/lib/libsunq.so
gcc hello.c -lsunq -L /root/workspace/lib -o hello
 
-llib
就像上例中指定链接库,通过-lsunq去链接libsunq.so。这是因为Linux下的库文件在命名时都必须以"lib"开头,所以可以省略这3个字母
 
有时候编译出来的程序,在运行时找不到动态链接库,我们需要设置一下环境变量LD_LIBRARY_PATH。如:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/workspace/lib
 
警告提示:
-w 禁止所有警告
-Wunused 警告未使用的变量
-Werror 将警告视为错误
-Wall 显示所有有用的警告信息
eg. gcc -Wall -o hello hello.c
 
调试:
-g 让gcc在编译时产生调试信息,以便使用gdb调试
-pg 产生额外的代码输出,提供给gprof等工具使用
 
代码优化:
-On 指定优化级别,n在0到3之间,n越大表示优化越好。-O0表示不优化,-O3表示尽可能的优化。在需要调试的时候,最好不要优化。如果不指定该选项的话,就是-O0
1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics