我正在尝试使用gnu make工具链交叉编译应用程序。以前我已经成功编译了Qt和QAxContainer模块。我似乎正在设置所有必需的环境变量。 使用libtool我使用以下命令链接我的应用程序:
/bin/bash ../libtool --tag=CXX --tag CXX --mode=link /home/test/Gridcoin-Research/depends/x86_64-w64-mingw32/share/../native/bin/ccache x86_64-w64-mingw32-g++ -std=c++11 -Wstack-protector -fstack-protector-all -pipe -O2 -pthread -Wl,--dynamicbase -Wl,--nxcompat -Wl,--high-entropy-va -mwindows -all-static -L/home/test/Gridcoin-Research/depends/x86_64-w64-mingw32/share/../lib -o qt/gridcoinresearch.exe qt/qt_gridcoinresearch-bitcoin.o qt/res/bitcoin-qt.o qt/libgridcoinqt.a leveldb/libleveldb.a leveldb/libmemenv.a -L/home/test/Gridcoin-Research/depends/x86_64-w64-mingw32/share/../lib -lboost_system-mt-s -lboost_filesystem-mt-s -lboost_program_options-mt-s -lboost_thread_win32-mt-s -lboost_chrono-mt-s -lqwindows -lqminimal -lQt5Concurrent -lQt5Widgets -lQt5Network -lQt5Gui -lQt5Core -lqtharfbuzzng -lqtpcre -lqtpng -lz -lQt5AxServer -lQt5AxContainer -limm32 -L/home/test/Gridcoin-Research/depends/x86_64-w64-mingw32/share/../lib -L/home/test/Gridcoin-Research/depends/x86_64-w64-mingw32/share/../plugins/platforms -lQt5DBus -L/home/test/Gridcoin-Research/depends/x86_64-w64-mingw32/share/../lib -lqrencode -ldb_cxx-4.8 -lssl -lcrypto -lminiupnpc -lcurl -lQt5PlatformSupport -lssp -lcrypt32 -liphlpapi -lshlwapi -lmswsock -lws2_32 -ladvapi32 -lrpcrt4 -luuid -loleaut32 -lole32 -lcomctl32 -lshell32 -lwinmm -lwinspool -lcomdlg32 -lgdi32 -luser32 -lkernel32 -lmingwthrd
应用程序已成功编译linux版本,其中不需要AxContainer模块。两个相关的链接错误是:
undefined reference to `QMetaStringTable::enter(QByteArray const&)'
undefined reference to `QVariantToVoidStar(QVariant const&, void*, QByteArray const &, unsigned int)'
是否可以正确交叉编译QAxContainer?
编辑:构建不是使用标准.pro文件完成的,而是使用gnu automake工具链。只有在交叉编译到windows时才包含qaxcontainer。我静态编译ActiveQt然后在构建过程中链接它。在此过程中,配置检查是否存在QAxContainer,并且能够找到主入口点。
答案 0 :(得分:0)
问题是缺少Qt5AxBase库,并且链接以错误的顺序完成。要在自我管理的环境中正确链接QAxContainer,需要按顺序包含以下链接标志:
-lQt5AxContainer -lQt5AxBase