2012-05-23 46 views
0

我在寫一個由另一個程序動態加載的庫。該庫使用一些Boost庫(例如,線程)。是否有可能在不重新編譯相關程序的情況下以某種方式工作?將其他庫鏈接到動態加載的庫中

如果我使用鏈接標記-lboost_thread,它不起作用,因爲使用此庫的程序也需要鏈接相同的Boost庫。使用/usr/lib/libboost_thread.a也不起作用,因爲.a文件未編譯爲-fPIC

我在Linux下使用GCC。

+0

你的意思是加載你的庫的程序需要在運行時加載boost庫嗎?您不應該在構建時將該庫鏈接到主應用程序,它只是一個運行時依賴項...對吧? – tmpearce

+0

該程序加載我編寫的一個動態庫。該庫取決於Boost。 – petersohn

+0

因此,程序無法在運行時找到Boost庫*的問題,因此您的庫無法加載? – tmpearce

回答

0

再次嘗試,我發現問題不是我所描述的。由於某些其他原因,圖書館未加載。我發現,-lboost_thread作品鏈接庫,符合下列條件:

  • GCC編譯器給出警告(可能是因爲庫是從-L路徑這是不是在$LD_LIBRARY_PATH)。
  • 加載庫時,它會自動加載Boost,前提是它可以找到它們。
相關問題