我对当前的C++ Linux项目有疑问。 我正在构建源代码并将其链接(IDE是QtCreator)到供应商提供的.o(不是.lib)文件。 在构建源文件时,似乎everythig很好,但是当达到链接时间时,命令行输出显示很多未定义的引用错误。 下面是使用CLI和它的输出:无法链接“.o”目标文件
arm-nobuos-linux-gnueabi-g++ -march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/opt/nobu-x11/4.1.15-1.1.1/sysroots/cortexa9hf-vfp-neon-nobuos-linux-gnueabi -c -pipe -O2 -pipe -g -feliminate-unused-debug-types -g -DLINUX=1 -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_CORE_LIB -I../qt_selexes_test2 -I. -isystem /opt/nobu-x11/4.1.15-1.1.1/sysroots/cortexa9hf-vfp-neon-nobuos-linux-gnueabi/usr/include -isystem /opt/nobu-x11/4.1.15-1.1.1/sysroots/cortexa9hf-vfp-neon-nobuos-linux-gnueabi/usr/include/qt5 -isystem /opt/nobu-x11/4.1.15-1.1.1/sysroots/cortexa9hf-vfp-neon-nobuos-linux-gnueabi/usr/include/qt5/QtCore -I. -I/opt/nobu-x11/4.1.15-1.1.1/sysroots/cortexa9hf-vfp-neon-nobuos-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -o moc_mrs_flasher.o moc_mrs_flasher.cpp
arm-nobuos-linux-gnueabi-g++ -march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/opt/nobu-x11/4.1.15-1.1.1/sysroots/cortexa9hf-vfp-neon-nobuos-linux-gnueabi -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o qt_selexes_test2 main.o dcan.o moc_dcan.o moc_mrs_flasher.o /SviluppoCodice/parodi/SW/updateAnalogCan_Wurth/qt_selexes_test2_20170511/qt_selexes_test2/mrs_flasher.o -lQt5Core -lpthread
main.o: In function `main':
main.cpp:26: undefined reference to `mrs_flasher::scan_module_wait(long, int, int, unsigned char&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
main.cpp:37: undefined reference to `mrs_flasher::select_module(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
main.cpp:41: undefined reference to `mrs_flasher::download_s19_wait(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
望着.o文件中似乎:
编译器的目标机器是一样的(通过调用命令文件通过编译我的CPP文件和供应商提供的.o文件,它们都生成以下输出:“ELF 32位LSB可重新定位,ARM,EABI5版本1(SYSV),未去除”
.o文件包含未定义的引用对象(我使用命令strings mrs_flasher.o |的grep为了搜索 “未定义参考`mrs_flasher :: scan_module_wait” scan_module_wait命令输出是:
scan_module_wait
_ZN11mrs_flasher16scan_module_waitEliiRhRSs
_ZN11mrs_flasher16scan_module_waitEliiRhRSs )
有没有人可以帮助我进一步调查此问题?有什么我可以发布以帮助解决问题? 谢谢乔瓦尼
谢谢麦克,我会给一个尝试将旧ABI办法(为了验证供应商库)。 然后,我会问他用我的编译器重建的.o。 现在我已经明白如何在QTCreator使用旧的ABI – Giox79