- 论坛徽章:
- 0
|
关于生成静态,动态库,有几个兼容性问题想请教大家
1. 静态库的
有些系统,特别是那些从Bekeley UNIX 衍生出来的系统,需要为静态链接库创建一个内容列表( a table of contents)
传统的做法是用ranlib libfoobar.a 的形式来创建,
但是注意到GNU 的 ar 有个s 参数与之功能相同,
只是不知单独使用 ar crs libfoo.a foo.o bar.o 创建的静态库在非Linux的系统上是否有兼容性问题?
(因为我只有Linux 系统,没其它的BSD系统进行测试,希望知道的人帮助解答一下,谢谢)
2. ld 生成的库
例如: 使用 gcc -fPIC -c file.c 生成 file.o 的目标文件,有人做过测试,在不同的系统中有不同的用法,如下:
FreeBSD: ld -Bshareable -o file.so file.o
Solaris: ld -G -o file.so file.o -ldl
Linux: ld -Bshareable -o file.so file.o -ldl
IRIX: ld -shared -o file.so file.o
OSF/1: ld -shared -o file.so file.o
3. gcc -share 生成的库
兼容性不是很了解,假设我用
gcc -fPIC -g -c foo.c
gcc -fPIC -g -c bar.c
创建了目标文件 foo.o bar.o, 然后用
gcc -shared -Wl,-soname,libfoobar.so.0 -o libfoobar.so.0.0.1 foo.o bar.o -lc
ldconfig -n .
ln -sf libfoobar.so.0 libfoobar.so
生成libfoobar.so 请问在其它的系统中是否存在兼容性问题?需要注意些什么?
4.其它方式生成的库
这个我不是很了解,如果谁知道,请介绍一下相关资料,谢谢! |
|