gcc日常使用
编译器默认会找的目录
$gcc -print-search-dirs
查看可执行程序信息
$readelf -a main
用ldd查看可执行文件依赖于哪些共享库
$ldd main
ld查找共享库路径的搜索顺序
1).首先在环境变量LD_LIBRARY_PATH所记录的路径下查找;
2).然后从缓存文件/etc/ld.so.cache中查找;(缓存文件有ldconfig命令读取配置文件/etc/ld.so.conf之后生成)
3).如果上述步骤都找不到,则到默认的系统路径中查找,先是/usr/lib然后是/lib
生成可执行程序
$gcc main.c -L. -lstack -Istack -o main
-L 告诉编译器去哪里找需要的库文件
-l 告诉编译器要链接libstack库
-I 告诉编译器去哪里找头文件
#gcc选项总结
-c 编译生成目标文件
-Dmacro[=defn] 定义一个宏
-E 只做预处理不做编译
-g 在生成的目标文件中添加调试信息
-Idir dir是头文件所在目录
-Ldir dir是库文件所在目录
-M和-MM 查看目标文件依赖的源文件
-o outfile 制定输出文件的文件名
-O? 各种编译优化选项
-print-search-dirs 打印库文件的默认搜索路径
-S 编译生成汇编代码
-v 打印详细的编译链接过程
-Wall 打印所有的警告信息
-Wl,options options是传递给链接器的选项
参考:
《Linux c编程一站式学习》,作者:宋劲杉