Solaris 32ビットシステム用にgccバージョン3.4.3を使用して共有オブジェクト(.so)を作成しようとしています。私はsolaris用の共有オブジェクトを作成するために必要なフラグを探していました。いくつかの投稿では、 "-shared"フラグが使用されていないことがわかりました。代わりに "-G"フラグが使用されます。私は "-G"フラグは "-g"と同じだが、 "-G"は "-shared"と同じような印象を受けた。私は正しいですか?Solaris 32ビット - gccを使用して共有オブジェクトを構築
SLES10 x86_64システムでは、.soをビルドするために "-shared"フラグが必要だったからです。
私は、次の試してみました: - :-sharedフラグを使用するuser562374 @ から参考提案 アップデート1
gcc -m32 -shared -fPIC -o myapi.so.1 myapi.o $(LIB)
-
LIB=-L/lib -L/usr/local/lib -L/usr/lib
gcc -m32 -G -fPIC -o myapi.so.1 myapi.o $(LIB)
は私がに上記変更する必要があります。
-sharedを使用して構築された共有オブジェクトが異なるコンパイラを使用してsolarisマシンにデプロイされ、「静的」にリンクされている場合、問題が発生しますか?私が「静的に」リンクされた.soと言うとき、私は共有オブジェクトが "dlsym"を使用するのではなくmakeファイルにリンクされていることを意味します。
これは、「静的に」リンクされていることではありません。静的リンク手段は、共有オブジェクトを使用する代わりに、必要な.aライブラリのセクションをバイナリにコピーします。共有オブジェクトがdlopenで動作する場合は、通常の動的ライブラリリンク(「静的に」と誤って呼び出されたもの)で動作するはずです。 – alanc