2010-09-06 104 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標誌來解決先前的問題,當然,這會使庫變得靜態。所以這種行爲只是正常的行爲,如果你依賴於靜態庫的動態庫,你必須將它們鏈接到你的應用程序中。所以我把共享標誌放回去了,現在我的一半功能不再可用了。它確實解釋了我所看到的問題。