在windows上,我用多个版本的GCC编译器,想在CM33内核的 ARM平台上编译生成动态库.so文件。但是报warning;
实际编译选项和结果如下:
arm-none-eabi-gcc.exe -fPIC -mthumb -mcpu=cortex-m33 -mfloat-abi=hard -mfpu=fpv5-sp-d16 -fPIC -shared -nostdlib -nostartfiles -fdata-sections -ffunction-sections -Og -g0 -o libexternal_qrcode.so
运行结果提示:
arm-none-eabi/bin/ld.exe: libexternal_qrcode.so: warning: thumb-1 mode PLT generation not currently supported collect2.exe: error: ld returned 1 exit status。
我把其中-mcpu=cortex-m33 替换成 -mcpu=cortex-m4 就可以了。
Cortex-M33 是 Armv8-M 处理器。 它基本和 M4兼容。你可以用最新的 gcc toolchain 试一下。
Cortex-M4 是 Armv7-M 处理器。https://en.wikipedia.org/wiki/ARM_Cortex-M 显示只要不使用特殊的 dsp 指令,M4 生成的 .so 应该可以在 m33 上面跑。