2017-05-03 117 views
0

我想在Linux上將我的libtest.cpp源代碼構建爲靜態/動態庫(libtest.so)。我想分享這個.so,而其他人可以用它們的編譯器(不同版本)鏈接到它。我想問一下如何實現它?編譯器鏈接獨立靜態/動態庫

據我所知,英特爾MKL是一個類似的庫,我們下載.h和.so,然後使用我們的編譯器鏈接到它。

最好的問候,

回答

0

要創建使用GCC靜態庫(我假設你正在使用gcc)使用以下行:

g++ -c libtest.cpp -o libtest.o 
ar rcs libtest.a libtest.o 

而對於共享庫:

g++ -c -fPIC libtest.cpp -o libtest.o 
g++ -shared -Wl,-soname,libtest.so.1 -o libtest.so.1.0.1 libtest.o 
+0

通過這種方式構建的庫依賴於編譯器和編譯器版本。當使用其他編譯器鏈接(在其他計算機中)時,可能會出現問題。 – Feng

+0

沒有任何編譯器和鏈接器可以生成全局庫文件,然後可以由地球上的每臺pc使用。您可能會遇到平臺和架構差異的問題。但與編譯器和鏈接器無關,因爲編譯器最終會根據指定的標準生成目標代碼。在我的回答中,我假定「其他人」擁有現代編譯器,並且具有相同的平臺和架構,因爲您沒有另行指定 – sithereal