我有一個項目,我有一個靜態庫libhelper.a
和另一個與我的實際共享對象庫libtestlib.so
。我的目標是將libhelper.a
鏈接到libtestlib.so
。這在Linux/BSD上可能嗎?當我試圖創造一個測試程序,我得到了以下錯誤:混合靜態庫和共享庫
./prog1:/usr/local/lib/libtestlib.so.1.0:未定義的符號'
我的猜測是這是因爲libhelper.a未編譯爲-fPIC
而libtestlib.so
是。構建使用共享庫的程序的正確方法是什麼?這些庫也具有靜態庫的依賴關係?
謝謝!
「將libhelper.a鏈接到libtestlib.so」什麼? – 2011-03-26 17:14:02
到目前爲止您嘗試了什麼?無論如何,我不知道有什麼方法將非PIC代碼鏈接到共享庫中。靜態庫通常只能鏈接到可執行文件中,這就是爲什麼它們很少用PIC編譯的原因。你不能將兩個庫鏈接到可執行文件,或者從一開始就用PIC來構建? – Philipp 2011-03-26 18:24:53