2016-10-12 17 views
1

の2つのバージョンを持つオブジェクトコードを確認したい、同じことを行うための手順は、私はQTのオープンソースを私はまた、Qtの(qt.4.3.3)の静的ライブラリを作っていますlibQtCore.a

ダウンロードされます-all-opensource-src-4.3.3。以下の手順で静的ライブラリを構築しました。私が使っているGCCのバージョンは、GCC 5.2.0

cd qt-all-opensource-src-4.3.3 
gmake conflcean 
./configure -release -static -largefile -qt3support -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -glib -platform linux-g++-64 -confirm-license -no-openssl -no-qdbus -prefix ./static_new -prefix-install -opengl -sm -lSM -lICE -xshape -lX11 -xinerama -lXinerama -xcursor -lXcursor -xfixes -lXfixes -xrandr -lXrandr -xrender -lXrender -fontconfig -lfontconfig -tablet -lXi -xkb -glib -lglib-2.0 -lXext -lz -lgthread-2.0 
gmake 
gmake install 

私は、エラーメッセージ

から../../corelib/codecs/qsimplecodec_p.h:36、 から次取得していますです../ ../corelib/codecs/qsimplecodec.cpp:22: ../../../include/QtCore/../../src/corelib/thread/qatomic.h:?QAtomicPointer ::のインスタンス化でQAtomicPointer(T *)[T = QByteArray]?: ../../corelib/codecs/qsimplecodec.cpp:592:74:ここから必要
../../../include/QtCore/ ../../src/corelib/thread/qatomic.h:190:7:エラー:?init?このスコープでは宣言されておらず、インスタンス化のポイントで引数依存ルックアップによって宣言は見つかりませんでした[-fpermissive] ../../../include/QtCore/../../src/corelib/スレッド/ qatomic.h:190:7:注意:依存ベースの宣言?QBasicAtomicPointer?非修飾ルックアップによって見つけられません ../../../include/QtCore/../../src/corelib/thread/qatomic.h:190:7:note:this-> initを使用しますか?代わりに gmake [1]:* [.obj/release-static/qsimplecodec.o]エラー1 gmake [1]:ディレクトリ/ in/inndt69/Projects/oasys/QT/QT/qt-x11-commercialを残す-src-4.3.3/QT-X11-商用-SRC-4.3.3/srcに/ツール/ RCC」 にgmake:* [サブRCC-make_default-命じ]エラー2

からの提案に従った後私は2つの実験

1) Experiment1 : compiled the Qt4.3.3 with -fpermissive flag and I got version of libQtCore.a 

2) Experiment2 : corrected the code and used this-init insted of init at line 190 and build passed 

は、今私はトンで生成されたオブジェクトコードを比較する必要がなかったWhat is correct way to solve the build error while making static libraries of Qt

libQtCoreの2つのバージョン(2つの実験から)。私は次のコマンドを使用しようとしました

1) objdump -t /pathtoQt/experiment1/libQtCore.a | grep -i atomic 
1) objdump -t /pathtoQt/experiment2/libQtCore.a | grep -i atomic 

しかし、私はobjdumpsでQAtomicPointerの参照を取得していません。

-fpermissiveフラグで生成されたオブジェクトコードを、{this-> init(t);}を使用する修正コードと比較する方法を教えてもらえますか。 }をエラーの原因となる行に追加します。

答えて

0

あなたが使用している非常に古いQtコードが有効でないため、エラーに直面しています。古いコンパイラはより許容され、無効なコードを受け入れました。バグを修正するには、あなたのQtのコピーを修正する必要があります。

関連する問題