gcc整理

1.-Wall 告警选项,可以输出告警信息 例如printf("%f\n", 4) 会输出double format, different
可以捕捉到c编程中最常发生的错误
可以对部分内容告警,而不使用all 使用-Wcomment 对嵌套注释告警 -Wformat 对格式化误用的告警 -Wunused 没有使用到的变量告警 等等其他
2.gcc -Wall -c main.c 编译main.c为目标文件(未连接)
3.gcc main.o hello.o -o hello 将多个目标文件链接起来生成可执行文件,注意可执行文件、目标文件都是elf格式文件
4.gcc -lNAME 提供链接库文件
例如 gcc -Wall calc.c /usr/lib/libm.a -o clac 等同于====> gcc -Wall calc. -lm -o clac
使用多个库的话 指定gcc -Wall calc.c -lm -lglpk -lxxx -o calc
5.gcc的头文件搜索路径在/usr/local/include/ /usr/include/
库搜索路径 /usr/local/lib /usr/lib
可以自己指定路径 -I 头文件路径 -L lib库搜索路径
也可在环境变量里面指定并export C_INCLUDE_PATH LIBRARY_PATH
6.如果.a静态库和.so同时存在,gcc优先使用动态链接 当使用动态库时,启动需要知道动态库的地址 可以通过环境变量LD_LIBRARY_PATH来设置
可以通过-static强制gcc使用静态连接
7.-ansi禁止与ANSI/ISO标准冲突的GNU扩展特性
8.编译时使用 -DNAME 如果NAME在代码中为预处理宏,则该宏则被定义
例如 test.c中
#ifdef TEST
XXXX
#endif
gcc -Wall -DTEST test.c 定义TEST
还可以给宏定值 gcc -Wall -DNUM=100 test.c
9.gcc -E test.c 对test.c文件进行预处理
10.gcc -g选项 允许程序在gdb控制下运行,另外还可以在coredump中使用
gdb a.out coredump 通过打印堆栈、变量来定位问题
11.通过 gcc -O1 -O2等来进行优化,可以O0—O3
O0 不优化
O1 最常见的优化
O2 GNU软件开发包的默认优化级别
O3 深度优化
12.与平台相关
gcc -march=pentium4 hello.c march参数是支持的cpu架构
13.创建静态库
ar cr libxxx.a xxx.o yyy.o 创建libxxx.a静态库
ar t libxxx.a 查看libxxx.a打包的目标文件有哪些
gcc -fPIC -shared xxx1.c xxx2.c xxx3.c -o libxxx.so 创建动态库
14.结合gprof的应用
gcc -Wall -pg test.c -o test 需要带上-pg选项
使用gprof test 测量test这个二进制文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值