我正在尝试使用gcc版本3.4.3为Solaris 32位系统创建一个共享对象(.so)。我正在谷歌上搜索为solaris创建共享对象所需的标志。在一些帖子中,我看到没有使用“-shared”标志。而是使用“-G”标志。我的印象是“-G”标志与“-g”相同,但似乎“-G”相当于“-shared”。我是对的吗?
原因是使用SLES10 x86_64系统时,需要使用“-shared”标志来构建.so。
我试过以下: -
LIB=-L/lib -L/usr/local/lib -L/usr/lib
gcc -m32 -G -fPIC -o myapi.so.1 myapi.o $(LIB)
我是否需要将上述内容更改为: -
gcc -m32 -shared -fPIC -o myapi.so.1 myapi.o $(LIB)
UPDATE1 有用的建议来自 @ user562374使用-shared标志。
如果使用-shared构建的共享对象使用不同的编译器部署在solaris机器上,并且如果它是“静态”链接的,它会导致任何问题吗?当我说“静态”链接.so时,我的意思是共享对象在make文件中链接而不是使用“dlsym”。
答案 0 :(得分:1)
-G num
Put global and static objects less than or equal to num
bytes into the small data or bss sections instead of the
...
如果是gcc,则为-shared
,因为-G
还有其他用途。