转自:《C专家编程》
1. 动态链接库的扩展名是“.so”,而静态链接库的扩展名是“.a”
2. 例如,你通过-lthread选项,告诉编译链接到libthread.so
换句话说,lib前缀和.so后缀都被省略了
3. 编译器期望在确定的目录找到库
一帮在环境变量LD_LIBRARY_PATH和LD_RUN_PATH中设置,也可以使用-Lpathname这个编译器选项来指定。出于安全性、性能和创建、运行独立性方面的考虑,使用环境变量的做法现在已经不提倡。一般还是在链接时使用-Lpathname和-Rpathname来指定。
4. 观查头文件,确认所使用的函数库。
怎样在函数库中观察一个符号:
如果在链接过程中遇到下面这个错误:
ld: undefined symbol
_xdr_reference
*** Error code 2
make: Fatal error: Command failed for target 'prog'
它提示找不到符号xdr_reference的定义。这里有一种方法,可以通过它找到需要链接的库。基本的想法是使用nm命令在/usr/lib的每个函数库中浏览所有的符号,从中寻找所丢失的符号。在缺省情况下,链接器会在/usr/lib和/usr/ccs/lib中查找,你也应该从这两个地方着手。
% cd /usr/lib
% foreach i (lib?*)
? echo $i
? nm $i | grep xdr_reference | grep -v UNDEF
? end
这会在/usr/lib目录中的所有函数库上运行"nm"程序,它显示函数库中已知的符号列表。通过grep设定需要搜索的符号,并过滤掉标记为“UNDEF”的符号(在该函数库中有引用,但不是在此处定义)。
5. 与提取动态库中的符号相比,静态库中的符号提取方法限制更严。
在动态链接和镜头链接的语义上有一个巨大差别,archive(静态库)与共享对象(动态库)的动作不同。在动态链接中,所有的库符号进入输出文件的虚拟地址空间中,所有的符号对于链接在一起的所有文件都是可见的。相反,对于静态链接,在处理archive时,它只是在archive中查找载入器当时所知道的未定义符号。因此,使用静态链接的过程中,引入静态链接库的顺序是很重要的。如果相同的符号在两个不同的静态链接库中都有定义,那么静态库出现的顺序不同,编译的结果就可能不同。
如果在自己的代码之前引入静态库,又会带来一个问题。因为此时尚未出现未定义的符号,所以它不会从库中提取任何符号。接着,当用户程序生成的目标文件被链接时,它的所有对函数库的引用都将是未实现的!因此,在进行编译时,始终将-l函数库选项放在编译命令选项的最右边。
分享到:
相关推荐
特殊函数 VC 特殊函数 VC 特殊函数 VC 特殊函数 VC
1.创建一个动态链接库,在该动态链接库中添加一个函数,该函数可以输出如图所示的图形; 2.在上面创建的动态链接库中添加导出类,并把绘制图形的函数添加到该类下; 3.创建一个动态链接库,在该动态链接库中添加一个...
资源涉及到字符串的查询,访问,二维数组,二级指针等高级的应用,为实际工程中的应用。 创建了一个动态链接库,然后通过函数指针来访问动态链接库,实现字符串的查找功能
函数库 函数库 函数库 函数库 函数库 函数库 _3 函数库 函数库 函数库 函数库 函数库 函数库 _3 三个必须同时下载
函数库 函数库 函数库 函数库 函数库 函数库 _2 函数库 函数库 函数库 函数库 函数库 函数库 _2
函数库 函数库 函数库 函数库 函数库 函数库 _1 函数库 函数库 函数库 函数库 函数库 函数库 _1
DSP函数库 DSP函数库 DSP函数库 DSP函数库 DSP函数库
基于c语言的fft快速傅里叶变换动态链接库。
由特定微分方程的解定义的特殊函数有正交多项式(如Chebyshev、Laguerre和Hermite多项式),Gamma函数,Legendre函数类,Bessel函数(如球Bessel、变型Bessel、Ricatti-Bessel函数等),Kelvin函数,Airy函数,...
西门子函数库通用函数库LGF库.zip
1.3 建立一个包含加法函数、减法函数的动态链接库文件和一个包含加法函数、减法函数的函数声明的头文件;编写、调试并运行一个MFC应用程序,该MFC应用程序调用了你所建立的动态链接库中的加法函数、减法函数。
C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言...
一个完整的Hash算法单元,如MD5、CRC之类等等。 FastMM.pas 国外很著名的内存管理单元,Delphi2006的内存管理单元用的就是它。 FastStrings.pas 一个快速字符串处理单元,一些函数用汇编写的,处理速度比DELPHI...
ODBC_数据库链接函数库.doc
S7通用函数库 链接地址
动态链接库输出函数的动态加载C++源代码程序小实例
针对特殊函数进行计算,包含贝塞尔函数 开尔文函数等函数的简化公式以及原理
绝密_链接编译报错 2个静态库包含同名函数的处理方法 ,常用于嵌入式 移植开发过程中 静态库 相同函数 重复定义的error
PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例 PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例 curl获取远程文件内容 GD显示中文 PHP GIF动画生成类 PHP HTML转UBB函数 ...
glut函数库 几个glut函数库 glut函数库