У меня есть вопрос о моем текущем проекте C++ Linux. Я создаю исходный код и связываю его (IDE — это QtCreator) с файлом .o (не .lib), предоставленным поставщиком. При создании исходных файлов кажется, что все в порядке, но когда я достигаю времени компоновки, вывод командной строки указывает на множество ошибок неопределенных ссылок. Вот используемый cli и его вывод:
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, кажется, что:
целевая машина компилятора одна и та же (при вызове командного файла в файлах .o, сгенерированных путем компиляции моих файлов cpp и файла, предоставленного поставщиком, оба они генерируют следующий вывод ELF 32-битный LSB перемещаемый , ARM, EABI5 версии 1 (SYSV), без разделки
файл .o содержит неопределенные объекты, на которые ссылаются (я использовал команду strings mrs_flasher.o | grep scan_module_wait для поиска неопределенной ссылки на `mrs_flasher::scan_module_wait). вывод команды:
scan_module_wait
_ZN11mrs_flasher16scan_module_waitEliiRhRSs
_ZN11mrs_flasher16scan_module_waitEliiRhRSs )
Есть ли кто-нибудь, кто может помочь мне в дальнейшем исследовании этого вопроса? Есть ли что-то, что я могу опубликовать, чтобы помочь справиться с проблемой? Спасибо, Джованни.