LoveUnix » 编程开发 & Rational » 关于函式库(高手进)
让LU留住您的每

一天 让LU博客留住您的每一天
2006-1-16 16:32 happyhhhh2
关于函式库(高手进)

我用了两种方式建库,下面是三种不同的编译方式
1.gcc errtest.c -o errtest -L. -lerr (我事先在当前目录下建了一个叫liberr.a的高组织结构文档)

2.gcc errtest.c liberr.o -o errtest(liberr.o是我未编译成liberr.a的目标文件)

(补上个)
3.gcc -g -shared -Wl.-soname,liberr.so -o liberr.so.1.0.0 liberr.o -lc
   ln -s liberr.so.1.0.0 liberr.so.1
   ln -s liberr.so.1.0.0 liberr.so
   gcc -g errtest.c -o errtest -L. -lerr
   LD_LIBRARY_PATH=$(pwd)
运行后结果都一样
问题:
1.这三种方式有没有什么区别吗(我试了几小时只看出3生成的errtest要比前两个大些,3中的调用比前两个多了个链接liberr.so)?
2.为什么我编译后把liberr.o跟liberr.a/so删除后执行./errtest依然能用(特别是1中的链接库都不在了居然还能用??)
3.我对3中-Wl.-soname,liberr.so这个参数不是很明白也请指教了哈
:'(

2006-1-18 10:39 jxppp
前面的1,2是直接连接进errtest. 静态连接
3.动态库.动态连接,大些的.

关于-wl --soname看 [url]http://fanqiang.chinaunix.net/a1/b5/20010622/110000633.html[/url]
gcc howto的中文版.

2006-1-18 10:40 jxppp
其实知道怎么用就好了.:D

页: [1]
查看完整版本: 关于函式库(高手进)


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.