2.头文件目录有多余的头文件,里面声明的函数找不到定义就会报错,头文件删掉即可解决报错。
linux动态链接和静态链接简析1.生成静态链接库gcc-c
h.c
-o
h.oar
cqs
libh.a
h.o//ar是生成库的命令,cqs是参数,libh.a是生成的静态链接库须以lib开头,h是库名,a表示是静态链接库,h.o是刚才生成目标文件2.生成动态链接库
www.zhishiwu.com
gcc
-c
h.c
-o
h.o生成动态链接库用gcc来完成gcc
-shared
-WI
-o
libh.so
h.o//-shared
-WI是参数,libh.so是生成的静态链接库须以lib开头,h是库名,so表示是动态链接库,h.o是刚才生成目标文件3.将生成的libh.a,libh.so拷贝到/usr/lib或/lib下4.编译带静态链接库的程序gcc
-c
test.c
-o
test.ogcc
test.o
-o
test
-WI
-Bstatic
-lh//-WI
-Bstatic表示链接静态库,-lh中-l表示链接,h是库名即/usr/lib下的libh.a5.编译带动态链接库的程序gcc
-c
test.c
-o
test.ogcc
test.o
-o
test
-WI
-Bdynamic
-lh//-WI
-Bdynamic表示链接动态库,-lh中-l表示链接,h是库名即/usr/lib下的libh.so6.运行./test得到结果
www.zhishiwu.com
7.其他知识有些库形如libh.so.1.0,1.0表示版本号.若要使用该库,通常要建立一个软连接,用ln
-s
libh.so.1.0
libh.so.系统不知道1.0为何意思。编译连接时同时要用动态和静态链接库,则用如下命令gcc
test.o
-o
test
-WI
-Bstatic
-lh1
-WI
-Bdynamic
-lh28.动态库和静态库的位置问题把动态库或者静态库放在/usr/lib或者/lib下,在链接的时候系统会自动到这两个目录下寻找。如果没有放在这两个目录下,则修改/etc/ld.so.conf文件,把目录写入该文件,然后ldconfig,就OK了。如果没有放在usr/lib或者/lib目录下,也不修改/etc/ld.so.conf文件,也可以在编译的时候加上
-L/路径
也可以。但是在执行的时候还是会提示找不到库的所在。
作者
llg521208
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)