Я проверил командную строку конфигурации:
Код: Выделить всё
$ /opt/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-g
nueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=/opt/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/opt/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-linux-gnueabihf/bin/../libexec/gcc/arm-none-linux-gnueabihf/13.2.1/lto-wrapper
Target: arm-none-linux-gnueabihf
Configured with: /data/jenkins/workspace/GNU-toolchain/arm-13/src/gcc/configure --target=arm-none-linux-gnueabihf --prefix= --with-sysroot=/arm-none-linux-gnueabihf/libc --with-build-sysroot=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-linux-gnueabihf/install//arm-none-linux-gnueabihf/libc --with-bugurl=https://bugs.linaro.org/ --enable-gnu-indirect-function --enable-shared --disable-libssp --disable-libmudflap --enable-checking=release --enable-languages=c,c++,fortran --with-gmp=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-linux-gnueabihf/host-tools --with-mpfr=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-linux-gnueabihf/host-tools --with-mpc=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-linux-gnueabihf/host-tools --with-isl=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-linux-gnueabihf/host-tools --with-arch=armv7-a --with-fpu=neon --with-float=hard --with-mode=thumb --with-arch=armv7-a --with-pkgversion='Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)'
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 13.2.1 20231009 (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7))
Но когда я скомпилируйте тестовый двоичный файл для Armv8, кажется, он выдает правильный тег:
Код: Выделить всё
$ arm-linux-gnueabihf-gcc -march=armv7-a -shared -fPIC -o arm_raw_v7.so test.c
$ arm-linux-gnueabihf-gcc -march=armv8-a -shared -fPIC -o arm_raw_v8.so test.c
$ arm-linux-gnueabihf-readelf -A arm_raw_v?.so | grep Tag_CPU_arch:
Tag_CPU_arch: v7
Tag_CPU_arch: v8
Когда я провожу тот же тест с набором инструментов RPi3+ отсюда, компилятор примет -march=armv7-a, но полученный двоичный файл все равно будет печатать тег v8.
p>
Параметры конфигурации набора инструментов RPi:
Код: Выделить всё
/opt/cross-pi-gcc-10.2.0-2/bin/arm-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=/opt/cross-pi-gcc-10.2.0-2/bin/arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/opt/cross-pi-gcc-10.2.0-2/bin/../libexec/gcc/arm-linux-gnueabihf/10.2.0/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../configure --prefix= --target=arm-linux-gnueabihf --enable-languages=c,c++,fortran --with-sysroot=/arm-linux-gnueabihf/libc --with-build-sysroot=/tmp/cross-pi-gcc-10.2.0-2/arm-linux-gnueabihf/libc --with-arch=armv8-a --with-fpu=neon-fp-armv8 --with-float=hard --disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.2.0 (GCC)
Подробнее здесь: https://stackoverflow.com/questions/783 ... ed-for-arm