静态库链接时搜索路径顺序:
1. ld(GNU linker)会去找GCC命令中的参数-L
编译过程是分为四个阶段:预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(link) 【链接】
2. 再找gcc的环境变量LIBRARY_PATH
3. 再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的
动态链接时、执行时搜索路径顺序:
1. 编译目标代码时指定的动态库搜索路径
2. 环境变量LD_LIBRARY_PATH指定的动态库搜索路径
3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径
4. 默认的动态库搜索路径/lib
5. 默认的动态库搜索路径/usr/lib
有关环境变量:
LIBRARY_PATH环境变量:指定程序静态链接库文件搜索路径
LD_LIBRARY_PATH环境变量:指定程序动态链接库文件搜索路径
另:
从上述可知,如何找到生成的动态库有3种方式:
(1)把库拷贝到/usr/lib和/lib目录下。
(2)在LD_LIBRARY_PATH环境变量中加上库所在路径。
例如动态库libhello.so在/home/example/lib目录下:
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/home/example/lib
(3) 修改/etc/ld.so.conf文件,把库所在的路径加到文件末尾(直接写在文件末尾,不要在路径前加include),并执行ldconfig刷新(ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.)。这样,加入的目录下的所有库文件都可见。
分享到:
相关推荐
vs-dll-lib动态静态链接库使用项目-包含vs项目配置文件直接编译使用即可学会 这是一个完整的vs项目,一个解决方案,包含5个小项目。包含项目的全部配置文件,直接下载编译,轻松学会使用动态链接库dll与静态链接库...
c++ 静态链接库 动态链接库示例 静态链接库 动态链接库示例
动态链接库和静态链接库区别,让你真正理解动态链接库和静态链接库的区别。
详细描述C++动态链接库与静态链接库的创建以及原理,内附测试demo.
本文描述了Linux下使用动态链接库和静态链接库的项目建立及单步调试
详细介绍了静态链接库和动态链接库的创建和调用方法,其中动态链接库又分为加载时动态链接和运行时动态链接两种。附有程序进行说明~~
本文详细介绍了静态链接库与动态链接库的区别,适合于那些对二者概念分不清楚的同学,以及如何创建一个静态库和动态库的方法
介绍静态链接库和动态链接库作用和区别,制作静态库和动态库的方法,编程测试自己编写的两种库
Linux C 静态链接库 动态链接库 简单介绍 看完本例子,可以入门了。。。。
用简单的代码来说明动态链接库和静态链接库的生成和使用。简单的说明参考notes.txt
自己学习的笔记,主要讲述的是动态库和静态库的创建,使用,以及一些学习中遇到的问题!
详细讲解C语言动态静态链接库的概念,创建方法,使用方法,例子简单易懂
演示Qt静态链接库与动态链接库的创建与使用。环境:windows xp Qt4, MinGW编译器环境。供备忘和参考。
介绍静态链接库lib和动态链接库dll区别
动态链接库dll与静态链接库lib的详细解释 DLL调用的两种方式
openssl通常大家会使用动态链接库dll,这里为大家提供静态链接库lib
先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以...静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。
静态加载动态链接库;LIB静态加载动态链接库
linux下面的库文件有两种:静态链接库(xx.a)和动态链接库(xx.so)。 当一个程序使用静态链 接库,那么当link的时候,连接器会把所需要的函数拷贝到源程序里面,这样,当编译完以后,静态链接库就可以不需要了。如果...
linux静态库和动态库的区别