0

x86_64 プラットフォーム (Fedora16) で x86 アプリケーションをビルドしようとしています。このアプリケーションでは Qt を使用しており、ビルド システムは cmake です。私が使用しているCMakeLists.txtで:

find_package(Qt4 REQUIRED qtmain QtCore QtGui QtWebKit)

include(${QT_USE_FILE})

次のような Makefile を生成するための cmake コマンド:

cmake -DCMAKE_CXX_FLAGS="-fpermissive -m32" -DCMAKE_CXX_LINKER_PREFERENCE="-m32" -DCMAKE_EXE_LINKER_FLAGS="-m32" -DCMAKE_SHARED_LINKER_FLAGS="-m32"

そのため、リンカーをコンパイルした後、互換性のある Qt ライブラリを見つけることができません。次のようなエラー:

/usr/bin/ld: skipping incompatible /usr/lib64/libQtWebKit.so when searching for -lQtWebKit

大丈夫です。/usr/lib64 ライブラリには x64 プラットフォームがあります。/usr/lib に目的のライブラリがあり、それらは存在します! しかし、なぜFindQt4がプラットフォームを認識しないのですか? このスクリプトは次の変数を設定します: QT_LIBRARY_DIR、QT_LIBRARIES など。このような変数は次のように設定されます。

-- QT_LIBRARY_DIR: /usr/lib64

-- QT_LIBRARIES: optimized;/usr/lib64/libQtWebKit.so;debug;/usr/lib64/libQtWebKit_debug.so;optimized;/usr/lib64/libQtXmlPatterns.so;debug;/usr/lib64/libQtXmlPatterns_debug.so;optimized;/usr/lib64/libQtGui.so;debug;/usr/lib64/libQtGui_debug.so;optimized;/usr/lib64/libQtNetwork.so;debug;/usr/lib64/libQtNetwork_debug.so;optimized;/usr/lib64/libQtCore.so;debug;/usr/lib64/libQtCore_debug.so

私の質問: /usr/lib ではないのはなぜですか? どうすれば修正できますか?

4

1 に答える 1

0

おそらく、FindQt4 モジュールが-m32フラグについて何も知らないためです。

QT_LIBRARY_DIR明示的に設定してみてください。

于 2012-09-10T09:21:05.453 に答える