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

发布于 2024-10-16 04:08:07 字数 643 浏览 3 评论 0原文

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

I am trying to crate a shared object (.so) using gcc version 3.4.3 for Solaris 32 bit system. I was googling for flags required to create a shared object for solaris. In some of the posts , I see that "-shared" flag not used. Instead "-G" flag is used. I had an impression that "-G" flag is same as "-g", but it seems that "-G" is equivalent to "-shared". Am I correct?

The reason being that with SLES10 x86_64 systems, "-shared" flag was required to build .so.

I tried following:-

LIB=-L/lib -L/usr/local/lib -L/usr/lib
gcc -m32 -G -fPIC -o myapi.so.1 myapi.o $(LIB)

Do I need to change above to:-

gcc -m32 -shared -fPIC -o myapi.so.1 myapi.o $(LIB)

Update1
Helpful suggestion from
@user562374 to use -shared flag.

If the shared object built using -shared is deployed on solaris machine using different compiler and if it is "statically" linked, will it cause any issues? When I say "statically" linked .so, I mean shared object is linked in make file rather then using "dlsym".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雨后彩虹 2024-10-23 04:08:07
   -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还有其他用途。

   -G num
       Put global and static objects less than or equal to num
       bytes into the small data or bss sections instead of the
       ...

If it's gcc, it's -shared, because -G has other uses.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文