我的源码目录:main.c lib //lib是一个目录
我把头文件放在lib目录里面,gcc main.c -o test无法找到我放在lib目录里的头文件
在网上搜了一下,说要在 .bashrc 后面加一句:export C_INCLUDE_PATH=
以下是我.bashrc的配置:
ali asrm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
#Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export C_INCLUDE_PATH=/root/projects/ConsoleApplication1/lib //这条是新加的
然后再用gcc,依然找不到头文件:
#运行 gcc main.c -o test
/tmp/cco8z3FL.o:在函数‘main’中:
main.c:(.text+0x2a):对‘errExit’未定义的引用
collect2: 错误:ld 返回 1
问题,头文件和源文件在不同的目录,如何编译呢?
r each test case, just output a single integer, the number of convex quadrangles you can construct.
Sample Inputfgfdgfdg
头文件还没添加到库,或者路劲错误
-l加上需要导入的库
gcc 在编译时如何去寻找所需要的头文件:
※所以header file的搜寻会从-I开始
※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
※再找内定目录
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/……/……/……/……/include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/……/……/……/……/i386-linux/include
库文件但是如果装gcc的时候,是有给定的prefix的话,那么就是
/usr/include
prefix/include
prefix/xxx-xxx-xxx-gnulibc/include
prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include
在gcc行加个-l带库路径试下
-Iinc 将头文件路径链接编译
在编译的时候,需要收到链接库文件,- l +库文件的路径,例如:-luscsqlite3 依赖uscsqlite3库
gcc main.c -o test -I //root/projects/ConsoleApplication1/lib
你在命令行执行以下man errExit,看需要包含哪些头文件,包含进来,如果不行,就是没有安装相关的库,
利用sudo apt-get install libxxx-dev去安装就可以了
为什么不把头文件放在当前目录呢,
标准一点的应该是将头文件放到include目录下
或者告诉编译器找头文件到lib目录下找
想这类问题百度一下自己是可以解决的