Я настраиваю проект для малины и сталкиваюсь с ошибкой компоновки, которую я не понимаю.
Контекст:
На самом деле, я кросс-скомпилировал Qt и все работали штрафы. Теперь я пытаюсь заставить opencv работать и для обработки изображений в моем приложении Qt. Вместо кросс-компиляции opencv я установил его с помощью apt install и синхронизировал мой целевой sys root в ~ / raspi / sys root. Чтобы получить управление камерой raspi, я использую библиотеки mmal (расположены в rpi в / opt / vc / lib). Я скрестил скомпилированный Qt с g cc -linaro-7.4.1-2019.02-x86_64_arm- linux -gnueabihf, так что qmake также использует его. Raspi использует Raspian Buster Lite, который использует довольно старый glib c (причина использования g cc -linaro-7.4.1, рекомендуется в документации Qt mkspe c)
Проблема:
Когда я пытаюсь скомпилировать простую основную. cpp, компоновщик не работает при компоновке библиотек opencv:
~/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::random_device::_M_getentropy() const@GLIBCXX_3.4.25'
На моем raspy версия glib c равна
$ strings /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_DEBUG_MESSAGE_LENGTH
Вопрос:
Я не понимаю, как opengl не может сделать ссылку на символ, который установлен на моем распи для моего рапси? Я попытался скомпилировать этот код на распи и все ссылки правильно. Чего мне не хватает?
Приложение: ошибка команды
~/Documents/personal/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=~/raspi/sysroot -Wl,-O1 -Wl,-rpath,/usr/local/qt5pi/lib -Wl,-rpath-link,~/raspi/qt5pi/lib -Wl,-rpath-link,~/raspi/sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,~/raspi/sysroot/lib/arm-linux-gnueabihf -o photomata main.o -L~/raspi/sysroot/opt/vc/lib/ -lopencv_core -lopencv_videoio -lopencv_highgui -lraspicam -lmmal -lmmal_core -lmmal_util -lmmal_vc_client -lmmal_components -lvchiq_arm -lvcsm -lcontainers -lvcos -lbcm_host ~/raspi/qt5pi/lib/libQt5MultimediaWidgets.so ~/raspi/qt5pi/lib/libQt5Widgets.so ~/raspi/qt5pi/lib/libQt5Multimedia.so ~/raspi/qt5pi/lib/libQt5Gui.so ~/raspi/qt5pi/lib/libQt5Network.so ~/raspi/qt5pi/lib/libQt5Core.so -L~/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lGLESv2 -lpthread
..................
Спасибо Вы нашли время, чтобы прочитать и, возможно, помочь мне.
Проблема продолжается на Отсутствует crt1.o / crti.o для кросс-компиляции