赞
踩
在使用各种各样的C++库的时候,有的时候会遇到找不到的问题,特此整理此博客来记录gcc/g++链接动静态库的过程。
#include<>表示默认系统路径下寻找。
#include""表示先在当前路径寻找,再去系统路径寻找。
gcc与g++所查找的头文件所在路径有两种种情况:
默认指定到/usr/include路径。但是在一些编写驱动模块的设定中,会强制gcc不去搜索默认路径,此时可以加-nostdinc选项,此时必须使用-l来指定路径。
(1)假设文件结构如下:
test.c
test/test.h
(2)此时有两种方式来找到这个头文件:
第一种方式在test.c的这样包含头文件:#include"test/test.h"
第二种方式在gcc执行的时候:gcc -l test test.c
先按顺序查找-l指定的路径,然后在gcc的环境变量中寻找,最后再去内定目录中查找。
注意这只是头文件的指定,下面介绍库文件的查找方法。
动态库的默认搜索路径在/lib和/usr/lib中。
-L后的内容表示的是库的路径,-l后表示的是库的名称。
在配置文件/etc/ld.so.conf中指定动态库搜索路径,其中他的每一行都是一个搜索路径。每次编辑完该文件之后都要执行ldconfig来进行刷新。
通过环境变量LD_LIBRARY_PATH指定动态库搜索路径。
同时也可以使用export指令来更新环境变量。
1.编译目标代码时指定的动态库搜索路径。
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径。
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径。
4.默认的动态库搜索路径/lib。
5.默认的动态库搜索路径/usr/lib。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。