红联Linux门户
Linux帮助

linux下编译源码和运行程序时include文件和lib库文件的注意事项

发布时间:2017-06-24 11:51:20来源:linux网站作者:学树爱
1.include文件
编译时,用“”而非<>引用的头文件,会在源码所在的目录中搜寻头文件。用<>引用的头文件一般会在usr/include,usr/local/include等中搜寻。
 
2.lib动态库文件
编译时引用的库文件一般会在usr/lib,usr/local/lib等中搜寻。
 
3.有些库或头文件并不在默认的搜寻路径中,怎么办呢?
办法1:移动到默认的搜寻路径中
办法2:编译时用-I 指定include目录,-L指定lib路径,-l指定库名,但是运行文件时,还是会找不到库
办法3:在环境变量中
#增加.so搜索路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/liheyuan/soft/lib
#增加.a搜索路径
LIBRARY_PATH=$LIBRARY_PATH:/home/liheyuan/soft/lib
#增加bin搜索路径
export PATH=$PATH:/home/liheyuan/soft/bin
#增加GCC的include文件搜索路径
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/liheyuan/soft/include
#增加G++的include文件搜索路径
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/home/liheyuan/soft/inc
办法4:在 /etc/ld.so.conf 文件中添加库的搜索路径。(或者在/etc/ld.so.conf.d 下新建一个.conf文件,将搜索路径一行一个加入。
需要注意的是:这种搜索路径的设置方式对于程序连接时的库(包括共享库和静态库)的定位已经足够了,但是对于使用了共享库的程序的执行还是不够的。这是 因为为了加快程序执行时对共享库的定位速度,避免使用搜索路径查找共享库的低效率,所以是直接读取库列表文件 /etc/ld.so.cache 从中进行搜索的。/etc/ld.so.cache 是一个非文本的数据文件,不能直接编辑,它是根据 /etc/ld.so.conf 中设置的搜索路径由 /sbin/ldconfig 命令将这些搜索路径下的共享库文件集中在一起而生成的(ldconfig 命令要以 root 权限执行)。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/31706.html