如何为 Arm Cortex M4 交叉编译 GSL?

2024-02-27

我正在使用带有arm cortex m4的STM32 MCU,并且想要使用gsl-2.7.1。但是,我已经尝试过例如命令./configure --prefix=/home/user_name/gsl_arm --target=arm-none-eabi以及我可以在互联网和工具链教程上找到的所有其他建议,但在最好的情况下,我在与构建库链接期间遇到了“无法识别符号”之类的错误。在最坏的情况下,自动配置的建议选项无法被识别(例如,指定 cpu)。有谁知道我必须如何交叉编译它?


其中有一个小错误接受的答案 https://stackoverflow.com/a/70913567/16757649.


请注意,您必须使用软件浮点,因为某些库仅使用它。

软件浮点并不是严格的要求,您确实可以使用硬浮点应用程序二进制接口(ABI)来编译 GSL。

编译器标志变量CFLAGS已被拼写错误为CCFLAGS。因此指定的编译器标志将被忽略。这是有问题的,因为 GSL 的配置除了整个库的主 makefile 之外,脚本还为嵌套模块生成 makefile。

因此,诸如IEEE-utils,西曼GSL 目录中的等均使用默认浮点 ABI 标志 (softfp) 进行编译。

由于编译器标志也作为参数传递给链接器,因此 GSL 的编译会导致与硬 fp ABI 的期望不匹配与冲突 https://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/ARM-Options.html#:%7E:text=Note%20that%20the%20hard%2Dfloat%20and%20soft%2Dfloat%20ABIs%20are%20not%20link%2Dcompatible%3B%20you%20must%20compile%20your%20entire%20program%20with%20the%20same%20ABI%2C%20and%20link%20with%20a%20compatible%20set%20of%20libraries.上述模块正在为 softfp ABI 编译。


我能够使用硬浮点 ABI 编译 GSL,并生成用于 BeagleBone Black (ARM Cortex-A8) 上裸机固件开发的静态库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 Arm Cortex M4 交叉编译 GSL? 的相关文章

随机推荐