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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!