我也在制作Qt的静态库(qt.4.3.3),做同样的步骤是
我下载了qt-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 *)[with T = QByteArray]?:
../../corelib/codecs/qsimplecodec.cpp:592:74:从这里要求
../../../include/QtCore/../../src/corelib/thread/qatomic.h:190:7:错误:?init?未在此范围内声明,并且在实例化时,参数依赖查找未找到任何声明[-fpermissive]
../../../include/QtCore/../../src/corelib/thread/qatomic.h:190:7:注意:依赖基地的声明?QBasicAtomicPointer?不合格的查找找不到
../../../include/QtCore/../../src/corelib/thread/qatomic.h:190:7:注意:使用?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-commercial-src-4.3.3/src/tools/rcc “
gmake:* [sub-rcc-make_default-ordered]错误2
遵循What is correct way to solve the build error while making static libraries of Qt
的建议我做了两次实验
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
现在我必须比较用两个版本的libQtCore生成的目标代码(来自两个实验)。我尝试使用以下命令
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 :(得分:0)
您正面临错误,因为您使用的旧Qt代码无效C ++:旧编译器更宽松并接受无效代码。您必须修补Qt的副本以修复错误。