gcc,g++编译链接有关的路径

http://blog.youkuaiyun.com/kankan231/article/details/24243871


在Linux下编译链接或运行c/c++程序时可能会遇到找不到头文件,找不到库文件的错误,简单总结一下这些错误的解决方法

1,找不到头文件

解决方法一:在编译时使用 -I 来指定头文件的路径,例如把头文件放在 /home/user/include/ 目录下,则在编译时加上 -I /home/user/include/ ,如有多个目录,可多次使用-I来指定

解决方法二:将头文件的路径加入环境变量CPATH中,如 export CPATH=" /home/user/include/",也可以根据情况使用下面的三个环境变量:

C_INCLUDE_PATH 编译C程序时使用的环境变量,用于查找头文件。
CPLUS_INCLUDE_PATH 编译C++程序时使用的环境变量,用于查找头文件。
OBJC_INCLUDE_PATH 编译Obj-C程序时使用的环境变量,用于查找头文件。
CPATH 编译C/C++/Obj-C程序时使用的环境变量,用于查找头文件。


2,链接时找不到库文件

解决方法一:在链接时使用-L参数来指定库的路径,例如把某个自己制作的动态库放在/home/user/lib/目录下了,则链接程序时加上-L/home/user/lib/,同时可以使用-l来指定库的名称,如指定线程库:-lpthread

解决方法二:把库文件放入系统的库文件目录下,如/lib,/usr/lib等,操作系统运行该程序时会自动到这些目录下找库文件

解决方法三:把库文件所在的目录加入LIBRARY_PATH环境变量中,如 export LIBRARY_PATH=" /home/user/lib/"


3,运行时找不到动态库

解决方法一:把库文件放入系统的库文件目录下,如/lib,/usr/lib等

解决方法二:把库文件所在的目录加入LD_LIBRARY_PATH环境变量中,如 export LD_LIBRARY_PATH=" /home/user/lib/"


### GCC/G++ 常用编译选项及参数说明 #### 编译过程控制选项 - `-c`:仅编译源文件而不进行链接阶段,生成目标文件。这有助于分步构建大型项目[^3]。 ```bash gcc -c main.c -o main.o ``` - `-S`:只执行预处理和编译,生成汇编代码而不是机器码。 ```bash gcc -S hello.c -o hello.s ``` - `-E`:仅运行预处理器,输出经过宏替换后的C/C++代码到标准输出。 ```bash gcc -E source.c ``` #### 输出控制选项 - `-o <file>`:指定输出文件名,默认情况下可执行文件名为 `a.out` 或者对于Windows平台为 `a.exe`。 ```bash g++ program.cpp -o myprogram ``` #### 优化选项 - `-O0, -O1, -O2, -O3`: 控制不同级别的优化程度;其中 `-O0` 表示无优化,而更高的数值代表更激进的优化策略. ```bash gcc -O2 test.c -o optimized_test ``` #### 调试支持选项 - `-g`:包含调试信息以便于使用GDB等工具进行程序调试. ```bash gcc -g debug_code.c -o debuggable_executable ``` #### 库与头文件路径设置 - `-I<dir>`:向编译器提供额外的查找目录以定位所需的头文件。 ```bash gcc -I/usr/local/include/mylib code.c -o compiled_program ``` - `-L<dir>`:告知链接器在哪里寻找静态或共享库。 ```bash gcc -l<name>`:指示链接特定名称的库(去掉前缀 'lib' 和扩展名)。例如,要链接 libm.so 数学库,则应写成 `-lm`. ```bash gcc math_example.c -lm -o math_example ``` #### 版本查询命令 - 使用 `gcc -v` 可显示详细的版本信息以及配置详情,这对于确认安装环境和支持的功能非常重要[^1]. ```bash gcc -v ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值