Когда я попытался скомпилировать пример кода, размещенный в https://eli.thegreenplace.net/2012/01/03/understanding-the-x64-code-models/#example - c -источник на устройстве arm64 (Raspberrypi) с
raspberrypi:~$ gcc -g -O0 -c code_model.c -fPIC -mcmodel=large -o code_model_large_pic.o
cc1: sorry, unimplemented: code model ‘large’ with -fPIC
, но clang с радостью компилирует то же самое.
Я подозреваю, что мне нужно включить некоторые дополнительные параметры конфигурации при сборке g cc для моего Raspberrypi.
raspberrypi:~$ gcc -dumpspecs
...
*cc1:
%{profile:-p}%{%:sanitize(address):-funwind-tables}
...
на моем x86-64 p c
x86-64-pc:~$ gcc -dumpspecs
...
*cc1:
%{!mandroid|tno-android-cc:%(cc1_cpu) %{profile:-p};:%(cc1_cpu) %{profile:-p} %{!mglibc:%{!muclibc:%{!mbionic: -mbionic}}} %{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC}}}}}
...
Я полагаю, что это как-то связано с %{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC}}}}}
.
Как собрать g cc для устройства arm64 для поддержки модели большого кода с позиционно-независимым кодом?