Бигль кость кросс-компиляция динамическая путаница

я здесь не с просьбой решить ошибку или проблему, а просто чтобы получить представление о чем-то от тех, у кого больше опыта.

Я купил 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-файле для статической компоновки библиотек во время компиляции на хосте, тогда код выполняется на кости, но не уверен, является ли это причиной какой-то другой проблемы, которая возникла у меня. ,

Это нормально, чтобы статически связать библиотеки в этом случае? Интересно, может ли библиотечный код, который является статически связанным, отличаться от кода, на который он будет ссылаться на кости в случае динамического связывания?

Когда я делаю статическое связывание, значит ли это, что не будет больше неразрешенных связей вообще (каждая функция реализована) при сборке исполняемого файла? Линукс Система () Например, функция, которую я вызываю, полностью встроена в мой исполняемый файл?

Многие вопросы извините, но все они связаны с одним и тем же недоразумением. Заранее спасибо за ваши знания.

2

Решение

Эта ошибка означает, что на устройстве не найден динамический libstdc ++. So.6. Доступна ли такая библиотека на самом деле, я не знаю.

Вполне может быть, что статическая компоновка — единственная конфигурация, которая будет работать для libstdc ++. Я знаю, что можно статически связывать некоторые библиотеки и динамически связывать другие, но я не знаю достаточно хорошо ни gcc, ни clang, чтобы сказать вам, какие опции будут делать это.

Если у вас статическая ссылка и нет неразрешенных символов, то да, ваш двоичный файл завершен.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]