正如标题所述,我的发布版本失败了,但我的调试版本编译正常。我如何编译两者之间的唯一区别是我的qmake
命令。对于调试版本,我按以下方式运行qmake
qmake BCE.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
对于发布版本,我的qmake命令是
qmake BCE.pro -spec linux-g++ CONFIG+=qtquickcompiler
运行qmake
之后,我只需运行make
命令。一切正常,直到最后一次调用编译器,调试Makefile发出此命令,然后程序进行编译:
g++ -o BCE main.o mainwindow.o extractrule.o newrule.o moc_mainwindow.o moc_newrule.o -lxml2 -lzip -L. -ldocx -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread
但是发行版Makefile发出以下命令:
g++ -Wl,-O1 -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -o BCE main.o mainwindow.o extractrule.o newrule.o moc_mainwindow.o moc_newrule.o -lxml2 -lzip -L. -ldocx -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread
在我的libdocx库中重新生成对libxml和libzip函数的未定义引用。 libdocx是一个静态库,可以处理docx的读写,它也与libxml和libzip链接