Кто-нибудь может объяснить соглашение об именах кросс-компиляторов gcc? - PullRequest
36 голосов
/ 20 апреля 2011

Я пытался понять соглашения об именах, лежащие в основе кросс-компиляторов gcc, но, похоже, есть противоречивые ответы. В моей системе три следующих кросс-компилятора:

  • arm-none-linux-gnueabi (ARM-компилятор CodeSourcery для linux)
  • arm-none-eabi (ARM-компилятор CodeSourcery для систем с «голым металлом»)
  • arm-eabi (компилятор Android ARM)

При чтении руководства по GNU libtool указывается соглашение о присвоении имен кросс-компиляторам:

cpu-vendor-os (os = система / ядро-система)

Это не совсем точно с компиляторами в моей системе. Является ли информация в руководстве GNU устаревшей или дистрибьюторы компиляторов просто перестали ее использовать?

Ответы [ 2 ]

27 голосов
/ 20 апреля 2011

Именование сводится к следующему:

arch-vendor-(os-)abi

Так, например:

x86_64-w64-mingw32 = архитектура x86_64 (= AMD64), w64 (= mingw-w64 как «поставщик»), mingw32 (= win32 API, как видно из GCC)

i686-pc-msys = 32-бит (pc = универсальное имя) msys двоичный

i686-unknown-linux-gnu = 32-bit GNU / linux

И ваш конкретный пример:

arm-none-linux-gnueabi = архитектура ARM, без поставщика, ОС Linux и ABI gnueabi.

Как вы говорите, arm-eabi используется для собственных приложений Android.

Одно предостережение: Debian использует другое именование, просто чтобы это было сложно, поэтому будьте осторожны, если вы наСистема на основе Debian, так как они имеют разные названия, например.i686-pc-mingw32.

0 голосов
/ 16 апреля 2019

Дело в том, что есть правило, и оно описано выше от rubenvb. Но в некоторых случаях имя, которое вы найдете, неверно, как:

gcc-pippotron-6.3.1-2017.05-x86_64_arm-linux-gnueabihf
gcc-pippotron-arm-none-eabi-4.8-2013.11_linux

Это maming выше - 2 примера, которые не соблюдают правило.

...