При роботі з крос-компіляцією для ARM Linux, виникає питання про складання програм для конкретної версії libstdc++
. Це особливо актуально, коли цільова система працює зі старішою версією операційної системи, яка підтримує лише певну версію цієї бібліотеки. У цій статті ми розглянемо, як скомпілювати програму з використанням g++-arm-linux-gnueabihf компілятора специфічно для версії libstdc++
, яка менша або рівна 3.4.20, зокрема використовуючи Debian-11 Docker образ.
1 |
Для початку, створимо Dockerfile, який буде містити налаштування середовища для крос-компіляції з використанням g++-arm-linux-gnueabihf компілятора та необхідної версії `libstdc++`: |
1 2 3 4 5 |
FROM debian:11 RUN apt-get update && apt-get install -y g++-arm-linux-gnueabihf RUN apt-get install -y libstdc++6=3.4.20 |
1 |
Тепер, коли наше середовище налаштоване, ми можемо здійснити крос-компіляцію нашого коду. Для цього використовуємо наступну команду: |
1 2 3 |
g++-arm-linux-gnueabihf -std=c++11 -o output_file input_file.cpp |
1 |
Ця команда скомпілює наш код з використанням необхідної версії `libstdc++` та забезпечить сумісність зі старішою версією операційної системи на цільовій системі ARM Linux. |