3

カスタム Qt バージョン (システム: 5.5.1、ユーザー: 5.8.0) で一連のライブラリとプログラムをコンパイルしようとしています。ほとんどの場合、1 つだけを除いてすべて正常に動作します。

必要な環境変数を正しく設定しました (qwt などの他のコンパイル済みライブラリが Qt の 5.8.0 バージョンへのリンクを正しく表示しているという事実によって証明されています)。

したがって、問題の核心は次のとおりです。5.8.0 バージョンに対してコンパイルしようとしているプログラム X には、/usr/lib にある依存関係があります。最終的に、生成された Makefile は次のようになります。

LIBS = $(SUBLIBS) -losgQt -L/usr/lib -lpython2.7 -lgdal [...] -L/home/user/Qt5.8.0/5.8/gcc_64/lib -lQt5OpenGL [...]

[...] でディレクティブをリンクする他のライブラリは省略しました。「qmake」プログラムを使用して Makefile を生成します。問題は、gcc がカスタム Qt ディレクトリの前に指定された /usr/lib ライブラリ パス (依存関係を見つけるために追加されたもの) を持っていることです。これは、ソフトウェアが 5.8.0 でコンパイルされているため、gcc が 5.8.0 より前のシステム Qt を検出し、リンク フェーズでエラー ((.qtversion[qt_version_tag]+0x0): undefined reference to `qt_version_tag') を呼び出すことを意味します。しかし、その後 5.5.1 にリンクされました。

結局のところ、答えは次のとおりです。生成された Makefile でライブラリ パスの順序を調整するにはどうすればよいでしょうか。

ありがとう!

4

0 に答える 0