2017-05-03 8 views
0

私はlibtest.cppソースコードをLinux上で静的/動的ライブラリ(libtest.so)としてビルドしたいと考えています。私はこの.soを共有したい、そして他の人はコンパイラ(異なるバージョン)でそれにリンクすることができます。私はそれを達成する方法を尋ねたいですか?コンパイラリンク独立静的/動的ライブラリ

私が知っているように、Intel 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

この方法で構築されたlibは、コンパイラとコンパイラのバージョンによって異なります。他のコンパイラを使用して(他のコンピュータで)リンクすると、問題が発生する可能性があります。 – Feng

+0

地球上のすべてのPCで使用できるグローバルライブラリファイルを生成するコンパイラとリンカはありません。プラットフォームとアーキテクチャの違いによって問題が発生する可能性があります。しかし、最終的にコンパイラは指定された標準に従ってオブジェクトコードを生成するので、コンパイラとリンカとは何の関係もありません。私の答えでは、「他の人たち」は現代のコンパイラを持っていて、別のものを指定しなかったので同じプラットフォームとアーキテクチャを持っていると仮定しました – sithereal

関連する問題