я здесь не с просьбой решить ошибку или проблему, а просто чтобы получить представление о чем-то от тех, у кого больше опыта.
Я купил BeagleBone Black (установлен Debian). Я кросс-компилирую C ++ для него в Windows, используя gcc-linaro и утилиту make, которая поставляется с инструментами yagarto.
Все работает и прекрасно работает при разработке кода C с помощью компилятора C.
Однако в C ++ при сборке исполняемого файла и переносе его на кость (через WinSCP) при выполнении я получаю следующую ошибку компоновщика:
«./leds1: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: версия` GLIBCXX_3.4.21 ‘не найдена (требуется ./leds1) «
Я не прошу решить эту проблему точно.
Означает ли это, что при сборке на хосте путь к библиотеке, определенный на хосте, отличается от пути на кости?
Однако, если я добавлю «-static» к моей команде компоновщика в моем make-файле для статической компоновки библиотек во время компиляции на хосте, тогда код выполняется на кости, но не уверен, является ли это причиной какой-то другой проблемы, которая возникла у меня. ,
Это нормально, чтобы статически связать библиотеки в этом случае? Интересно, может ли библиотечный код, который является статически связанным, отличаться от кода, на который он будет ссылаться на кости в случае динамического связывания?
Когда я делаю статическое связывание, значит ли это, что не будет больше неразрешенных связей вообще (каждая функция реализована) при сборке исполняемого файла? Линукс Система () Например, функция, которую я вызываю, полностью встроена в мой исполняемый файл?
Многие вопросы извините, но все они связаны с одним и тем же недоразумением. Заранее спасибо за ваши знания.
Эта ошибка означает, что на устройстве не найден динамический libstdc ++. So.6. Доступна ли такая библиотека на самом деле, я не знаю.
Вполне может быть, что статическая компоновка — единственная конфигурация, которая будет работать для libstdc ++. Я знаю, что можно статически связывать некоторые библиотеки и динамически связывать другие, но я не знаю достаточно хорошо ни gcc, ни clang, чтобы сказать вам, какие опции будут делать это.
Если у вас статическая ссылка и нет неразрешенных символов, то да, ваш двоичный файл завершен.
Других решений пока нет …