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的中文版.