2010-09-06 72 views
0

我正在将库移植到AIX上。它可以在Solaris,Windows和Linux上运行,但AIX让我很头疼。我处于构建和运行的阶段,但是我遇到了一些链接的库问题。理想情况下,我希望能够发布一个只需要c运行库的库,而无需其他依赖项。目前,我遇到了libpthread问题,我可以看到这是AIX特定线程库的符号链接。 我的问题是这样的: 如果我不链接pthread(我似乎不需要在Solaris上为相同的代码库),那么我得到未定义的符号。这很好,我正在使用pthreads。如果我把它连接起来,那么它工作正常,除了任何调用应用程序也必须链接到pthreads。我不明白为什么我的调用应用程序(它不依赖pthread)只需要调用一个链接到共享对象的库来链接它就可以了?AIX动态链接

我在AIX 6.1上使用gcc 4.2.4。

我可以运送需要pthreads出现在库路径上的库(理想情况下我们会得到一个静态版本),但我对运送放置链接器需求的库感到有点不高兴客户。

关于我可能做错什么的想法?

回答

0

我看起来好像在圈子里。我删除链接器上的-shared标志来解决先前的问题,当然,这会使库变得静态。所以这种行为只是正常的行为,如果你依赖于静态库的动态库,你必须将它们链接到你的应用程序中。所以我把共享标志放回去了,现在我的一半功能不再可用了。它确实解释了我所看到的问题。