質問

Linuxシステムで非常に古いソフトウェアをコンパイル/リンクしようとしていますが、何らかの理由でシステムにインストールされている共有ライブラリとリンクできません。

リンカーから次のエラーが表示されます:

/usr/bin/ld: cannot find -lXaw

ただし、lib自体はインストールされます。実行した場合

ldconfig -v | grep libXaw

(特に)このヒットがあります:

libXaw.so.7 -> libXaw7.so.7.0.0

ライブラリとライブラリへのリンクは/ usr / lib btwにあります。特別なことは何もありません。

したがって、ライブラリがあり、ldconfigがそれを見つけます。 ldがリンク時にライブラリを見つけられない原因は何ですか?既に推測したかもしれませんが、私は共有ライブラリーについてはまったく新しいです。

アイデアはありますか

役に立ちましたか?

解決

リンカーは、文字通り「libXaw.so」を探している可能性があります。 / usr / libにありますか?そうでない場合は、libXaw7.so.7.0.0から別のソフトリンクとして追加してみてください。

他のヒント

シンボリックリンクbtwの理由は、複数のバージョンの場合にリンクするデフォルトのバージョンを選択することです。ライブラリの名前がバイナリに統合されていることに注意してください。 (lddで確認できます)。

-Lライブラリのディレクトリは上書きされますか?/ usr / libを探していませんか?

リンクするには、ランタイムライブラリである.soファイルではなく、.aファイルが必要です。共有オブジェクトは、ライブラリの非共有部分に対して既にリンクされているプログラムにのみ役立ちます。これは通常、「。a」で配布されます。ファイル。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top