gcc 编译参数

-I : 包含头文件路径(绝对路径、相对路径都可以)
-O :优化选项,1-3
-L : 包含的库路径
-l :指定库名(如libxxx.so或libxxx/a,-lxxx)
-o : 指定目标文件
-c :编译成.o文件
-g : 用于gdb调试,不加此选项不能gdb调试
-Wall : 显示更多的警告
-D :指定宏编译
-lstdc++ : 编译C++代码

编译参数 用途
-I 指定头文件路径(绝对路径、相对路径都可以)
-O 优化选项,1-3,越高优化越多
-L 指定库路径
-l 指定库名(如libxxx.so或libxxx/a,-lxxx)
-o 指定目标文件
-c 编译成二进制文件(.o文件)
-g 用于gdb调试,不加此选项不能gdb调试
-Wall 显示更多的警告(这不是一个单词,它实际是-W,选项是all)
-D 编译时指定宏,等同于C语言中 #define MACRO(#define MACRO (100)
-E 输出到标准输出(宏替换、头文件展开)
-S 编译成汇编
-lstdc++ 编译C++代码

指定运行时库

Linux环境下程序运行涉及到动态库时,程序运行时候会出现找不到xxx库的提示,一般来说有两种解决方法:

  • 在环境变量LD_LIBRARY_PATH中指定搜索库的路径
  • 将链接库的目录添加到/etc/ld.so.conf文件中中,然后使用ldconfig进行更新,进行动态链接库的运行时动态绑定

最近,发现可以在编译程序时指定运行时库的路径的方法,编译参数为-Wl,-rpath=libpath,如

gcc -o foo foo.c -L./lib -lmylib -Wl,-rpath=./lib

参考文献

  1. gcc 运行指定动态库的三种方法
  2. linking with -Wl,-rpath and $(prefix)
posted @   时间的风景  阅读(363)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示