指定GCC 库文件 和头文件 搜索路径
2014-06-18 14:30
232 查看
如果我们项目在开发的时候,引用了其它的第三方库文件,可以会在GCC编译的时候,出现找不到库文件或者其它的错误,如之前在用libosip库的时候,没有指定库的安装路径,默认安装路径是/usr/local/lib目录下。
GCC在编译的时候,需要头文件和库文件进行连接,其会搜索指定的目录来查找所需要的头文件和库文件,-I 选项可以向GCC的头文件搜索路径中添加一个新的搜索目录,如:
[html] view
plaincopy
gcc sip.c -I /usr/local/include -o sip_client
表示在/usr/local/include目录下有编译时候所需要的头文件,因此用-I 指定路径,这样GCC就能够顺利的找到这些文件。
如果是库文件,就用-L选项指定,如:
[html] view
plaincopy
gcc sip.c -L /usr/local/lib -leXosip2 -o sip_client
这会向GCC编译的时候,添加库文件的搜索路径, 这可以看到,必须通过-l 指定所需要的库,才可以运行
值得好好解释一下的是-l选项,它指示GCC去连接库文件libfoo.so。Linux下 的库文件在命名时有一个约定,那就是应该以lib三个字母开头,由于所有的库文件都遵循了同样的规范,因此在用-l选项指定链接的库文件名时可以省去 lib三个字母,也就是说GCC在对-lfoo进行处理时,会自动去链接名为libfoo.so的文件。
一个要注意的问题
我们知道linux下的库文件有两种类型:一种是动态链接库,就是.so文件,第二种是静态链接库文件,一般都是.a文件,这两种库文件的差别是:程序在运行时,所需要的代码是在运行时动态加载的,还是在编译的时候静态加载的。在默认的情况下,GCC会优先使用动态链接库,也就是说如果so和.a文件同时存在的时候,会优先使用.so文件。如果我们希望程序使用静态链接库,可以加上-static选项,强制其使用静态链接库。路径都是用-L选项来指定。
GCC在编译的时候,需要头文件和库文件进行连接,其会搜索指定的目录来查找所需要的头文件和库文件,-I 选项可以向GCC的头文件搜索路径中添加一个新的搜索目录,如:
[html] view
plaincopy
gcc sip.c -I /usr/local/include -o sip_client
表示在/usr/local/include目录下有编译时候所需要的头文件,因此用-I 指定路径,这样GCC就能够顺利的找到这些文件。
如果是库文件,就用-L选项指定,如:
[html] view
plaincopy
gcc sip.c -L /usr/local/lib -leXosip2 -o sip_client
这会向GCC编译的时候,添加库文件的搜索路径, 这可以看到,必须通过-l 指定所需要的库,才可以运行
值得好好解释一下的是-l选项,它指示GCC去连接库文件libfoo.so。Linux下 的库文件在命名时有一个约定,那就是应该以lib三个字母开头,由于所有的库文件都遵循了同样的规范,因此在用-l选项指定链接的库文件名时可以省去 lib三个字母,也就是说GCC在对-lfoo进行处理时,会自动去链接名为libfoo.so的文件。
一个要注意的问题
我们知道linux下的库文件有两种类型:一种是动态链接库,就是.so文件,第二种是静态链接库文件,一般都是.a文件,这两种库文件的差别是:程序在运行时,所需要的代码是在运行时动态加载的,还是在编译的时候静态加载的。在默认的情况下,GCC会优先使用动态链接库,也就是说如果so和.a文件同时存在的时候,会优先使用.so文件。如果我们希望程序使用静态链接库,可以加上-static选项,强制其使用静态链接库。路径都是用-L选项来指定。
相关文章推荐
- gcc编译链接时指定头文件和库文件搜索路径
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题(一)
- 如何指定gcc的默认头文件路径(转)
- 对gcc搜索路径的研究/以及不修改/etc/ld.so.conf使用非默认路径下的库文件--LD_LIBRARY_PATH
- 库文件搜索路径及GCC搜索路径总结
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题(二)
- 指定GCC的默认头文件路径
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题
- 如何指定GCC的默认头文件路径(非常有用)
- linux gcc编译时头文件和库文件搜索路径
- gcc编译的头文件和库文件搜索路径
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题 3
- 如何指定GCC的默认头文件路径(非常有用)
- 如何指定GCC的默认头文件路径
- 如何指定GCC的默认头文件路径
- gcc/g++ 头文件和库文件搜索路径
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题 1
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题 2
- linux gcc 编译时头文件和库文件搜索路径inux gcc 编译时头文件和库文件搜索路径
- 如何在gcc编译时指定共享库的搜索路径?