2011-01-23 30 views
1

Mint Linuxのインストール時にCコードをコンパイルするときにコンパイルエラーが発生します。コンパイル時に共有Libのバージョンが一致しませんか?

エラーは、すべてのバージョンの不一致の問題です。ここで

は、「エラーをする」のセクションです:

/usr/bin/ld: warning: libthread.so.1, needed by /home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so, not found (try using -rpath or -rpath-link) 
/usr/bin/ld: warning: libsocket.so.1, needed by /home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so, not found (try using -rpath or -rpath-link) 
/usr/bin/ld: warning: libc.so.1, needed by /home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so, not found (try using -rpath or -rpath-link) 
/usr/bin/ld: warning: libdl.so.1, needed by /home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so, not found (try using -rpath or -rpath-link) 
/home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so: undefined reference to `xihThreadKey' 
/home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so: undefined reference to `xcsCreateThreadMutexSemX' 
/home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so: undefined reference to `thr_getspecific' 
/home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so: undefined reference to `xcsReleaseThreadMutexSem' 
/home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so: undefined reference to `xcsRequestThreadMutexSem' 
collect2: ld returned 1 exit status 
make: *** [idoclink_outbound] Error 1 

だから例えばそれは、「libsocket.so.1」について不平を言うが、私は唯一の「libsocket.so.0」を持っていますか?

C開発者はどのようにこの種の問題を回避するのですか?不平を言っている特定のlibsをダウンロードする方法はありますか?助けのための

おかげで;-)

リントン

+3

Linux上でWebsphere MQのSolarisバージョンを使用しようとしているようです... Solarisはおそらくlibmqm.soが探しているバージョン番号を使用していますが、Linuxはそうではありません。しかし、単にバージョン番号を変更しても、コンパイルされたSparcオブジェクトコードをLinux上で実行させることはできません。 –

+0

皆さんは100%正しかったです.....私のマシン上にSolaris UNZIPPED Websphere MQフォルダの "コピー"があります。私のフォルダ構造にはDEEPがあります。それから私がコードブロックで作業していたとき、私は "libmqm.so"の検索を行い、それはその愚かなsolarisフォルダの中で間違ったlibを選んだ... aaarrgg。私は今正しいlibを指し、すべて100%コンパイルします。助けをもう一度感謝します_) –

答えて

4

あなたは、Linux上でSolarisのために書かれたコードをコンパイルしようとしている、これが動作するようにビルドシステムでもコードでもないが、適切に条件付けされています。手掛かり一つはビルドディレクトリの名前です -

.../Websphere MQ for Solaris x86 64bit/... 

手掛かり2は、Solaris固有の動的ライブラリの名前の束をハード配線しているようだということです(Linuxはのlibthreadまたはlibsocketなどを持っていませんあなたがlibsocket.so.0を入手した場所はわかりませんが、これはおそらくこのプログラムが探しているものとは全く異なるものです)そして手がかり3は

libmqm.so: undefined reference to `thr_getspecific' 
です

thr_getspecificは、移植性が高く、Solaris固有のライブラリですルーチン(移植可能な同等物はpthread_getspecificですが、移植は単にコード内の名前を変更する問題ではありません)。

コードを入手した場所に戻って、それらにLinuxの亜種があるかどうかを確認します。もしそうでなければ、あなたはあなたの前で大きな仕事をしているかもしれません。

+0

クロスコンパイルは可能ですが、別のCライブラリとツールチェーンをホストすることを意味します。 –

+0

OPが(どちらの方向でも)クロスコンパイルしようとしていたなら、おそらくそう言っていたと思いますが、とにかくそれらのエラーメッセージを受け取っていないでしょう。 – zwol

+0

こんにちは、私はLinux x86 64ビット版をダウンロードしてMintにインストールしました。私もSolaris版のコピーを持っていますが、私はそれをインストールしていません...私はすべてをもう一度アンインストールして、もう一度やり直します....ありがとう;-) –

0

WebSphere MQライブラリーは、サーバーまたはクライアントのインストールで使用できます。 Cの開発者は、実際にはWMQソフトウェアを実際にインストールすることでこの種の問題を回避します。適切なWMQライブラリを非圧縮にすることを前提にしても、予想される場所にインストールされていないと、ひどく時間がかかることになります。たとえば、WMQメッセージカタログはNLSディレクトリにインストールされ、コンパイル時に参照されます。各ライブラリを指し示すコンパイラオプションを使用してすべての依存関係を解決できるかもしれませんが、ソフトウェアをインストールするほうがずっと速くて簡単です。

クライアントライブラリが必要な場合は、登録が必要ですが、SupportPac MQC7として自由にダウンロードできます。サーバーライブラリが必要な場合は、WMQ Serverまたはdownloaded the trialを購入する必要があります。主な違いは、サーバーライブラリは共有メモリを使用してローカルQMgrに接続でき、クライアントライブラリは常にネットワーク経由で接続できることです。 XAトランザクション性が必要な場合は、接続方法に関係なく、サーバーライセンスが必要です。 XA機能はWMQサーバー配布の一部であり、使用されている各ノードでライセンス義務が発生します。

インストールしたら、適切なlibstdC++などのすべてのprereqライブラリがあると仮定して、プログラムをコンパイルできるはずです。これらの要件は、プラットフォームごとにWMQ Detailed System Requirementsページに記載されています。最後に、Linux上のWebSphere MQのためのプログラムを、InfocenterのトピックBuilding your application on Linuxという適切な名前のトピックで作成する方法の詳細な手順があります。このセクションでは、コンパイルコマンド、ライブラリパス要件などの例を示します。

+0

こんにちは、あなたの情報ありがとう、ありがとう;-) –

関連する問題