Кросс-компиляция RPi с разницей в символах Arm-Linux-gnueabihi libstdc++C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Кросс-компиляция RPi с разницей в символах Arm-Linux-gnueabihi libstdc++

Сообщение Anonymous »

Кросс-компиляция через Docker в системе x86.

Обычные программы работают нормально, но когда я перехожу к использованию std::filesystem, который, похоже, используетshared_ptr, я получаю следующий выпуск
./package: symbol lookup error: ./package: undefined symbol: _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_, version GLIBCXX_3.4.26
  • Базовый образ Docker: ОТ debian:bullseye
    И RPi, и хост имеют одинаковые версии< /li>
Цель
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

$ g++ --version
g++ (Raspbian 10.2.1-6+rpi1) 10.2.1 20210110

Хост
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

$ arm-linux-gnueabihf-g++ --version
arm-linux-gnueabihf-g++ (Debian 10.2.1-6) 10.2.1 20210110

Дальнейшее исследование выявило следующие различия:
Цель:
$ nm -D /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE
0012b50c W _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE1EEaSEOS5_@@GLIBCXX_3.4.26
0012b4e8 W _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE1EEC1EOS5_@@GLIBCXX_3.4.26

Хост:
$ nm -D /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE
000000000014c4a0 W _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
000000000014c410 W _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26

Различия: target=E1EEaSEOS5 хост=E2EEC1EOS5.
ChatGPT говорит, что это относится к версии конструктора. Понятия не имею, как это исправить, кроме статического связывания.
Чем они могут отличаться и есть ли способ обойти это, кроме статического связывания?
< strong>РЕДАКТИРОВАТЬ расчлененные имена
Цель
$ c++filt _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE1EEaSEOS5_
std::__shared_ptr::operator=(std::__shared_ptr&&)
$ c++filt _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE1EEC1EOS5_
std::__shared_ptr::__shared_ptr(std::__shared_ptr&&)


Хост
$ c++filt _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_
std::__shared_ptr::__shared_ptr(std::__shared_ptr&&)
$ c++filt _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev
std::__shared_ptr::__shared_ptr()



Подробнее здесь: https://stackoverflow.com/questions/792 ... difference
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»