Solaris 32位 - 使用gcc构建共享对象

时间:2011-02-06 22:53:21

标签: c gcc solaris shared-libraries

我正在尝试使用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”。

1 个答案:

答案 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还有其他用途。