=Start=
缘由:
在Linux环境中编译安装软件的时候,经常会碰到类似于下面的错误:
sipAPIQtCore.h:33:17: 错误:sip.h:没有那个文件或目录
报这个错误是因为gcc没有在默认的搜索路径下找到对应的文件,这时,你需要手动为gcc指定头文件/库文件的搜索路径(前提是有对应的文件),才能顺利完成编译安装。
在此记录一下解决办法,方便以后参考。
正文:
参考解答:
方法一(环境变量):
export CPLUS_INCLUDE_PATH=/usr/local/include/python2.7:$CPLUS_INCLUDE_PATH export C_INCLUDE_PATH=/usr/local/include/python2.7:$C_INCLUDE_PATH
方法二(编译选项):
为gcc添加「-I dir」选项(可以通过多个「-I dir」的形式添加多个目录至搜索路径列表),将指定的目录添加到头文件搜索路径列表中去。
方法三(不建议):
将需要的所有头文件拷贝到默认的搜索目录下也可以完成编译,但这可能会改变系统默认的头文件内容,所以不推荐这种「饮鸩止渴」的方式。
==
#添加.so搜索路径 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/lib #添加.a搜索路径 LIBRARY_PATH=$LIBRARY_PATH:/path/to/lib #添加bin搜索路径 export PATH=$PATH:/path/to/bin #添加GCC的include文件搜索路径 export C_INCLUDE_PATH=$C_INCLUDE_PATH:/path/to/include #添加G++的include文件搜索路径 export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/path/to/include
==
当环境变量和命令行选项被同时使用时,编译器按下面的次序搜索目录:
- 从左到右搜索由命令行「-I」和「-L」指定的目录;
- 由环境变量,比如「C_INCLUDE_PATH」、「CPLUS_INCLUDE_PATH」和「LIBRARY_PATH」指定的目录;
- 默认的系统目录。
参考链接:
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题
- gcc指定头文件路径及动态链接库路径
- C_INCLUDE_PATH,CPLUS_INCLUDE_PATH和LIBRARY_PATH的用法
- Linux下include/lib/bin等搜索路径的配置
- Linux下编译链接动态库
=END=
《 “Linux下为gcc添加头文件的搜索路径” 》 有 2 条评论
https://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/Option-Summary.html#Option-Summary
https://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/Link-Options.html#Link-Options
https://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/Directory-Options.html#Directory-Options
CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
http://www.dzhope.com/post/1162/