2011-07-08 134 views
2

是否可以提供共享庫 - 在創建期間與其他共享庫的鏈接 - 對最終用戶透明?共享庫,庫依賴性

至於我的意思的例子:

共享庫構建

g++ ... `pkg-config gtk+-2.0 --cflags` ... `pkg-config gtk+-2.0 --libs` 

所需的用戶建立

g++ file.cc -lfoo 

哪裏libfoo.so.0是共享庫。

如果用戶構建包括pkg-config gtk+-2.0 ...,我似乎只能得到這個工作。在創建共享對象期間,有沒有辦法讓最終用戶不必擔心libfoo中使用的間接庫?

+0

是否有可能您正在拾取gtk lib istead的靜態版本?如果是這樣,那麼在用戶鏈接期間也將需要它。否則,如果它確實在使用共享庫,那麼在構建時就不需要它,但是在運行時將需要它。 –

回答

3

如果你有一個共享庫libABC.so可鏈接到libXYZ.so然後,
而創建libABC.so,你必須在編譯應用程序與libXYZ.so

ld --shared -o libABC.so -L. -lXYZ 

鏈接,

gcc app.c -L. -lABC 

唐別忘了,導出庫路徑

export LD_LIBRARY_PATH=. 
+0

+1您可以使用'-Wl,-rpath,.'設置'DT_RPATH',而不是依賴'LD_LIBRARY_PATH'環境變量。 –