为 ARM 32 位平台交叉编译 FFTW 库(基于正点原子的阿尔法开发板)

首先:因为电脑是X86-64位,而我们需要arm-32位,所以要先导入交叉编译工具链。
如果不会导入交叉编译工具链:
请查看:导入交叉编译工具链
echo $CC
arm-poky-linux-gnueabi-gcc -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi
这是我的交叉编译工具链输出的内容,有一些版本啥的,都是通过export临时设置的。
在这段输出中可以看到:设置了交叉编译工具链 arm-poky-linux-gnueabi-gcc,指定了 ARMv7 架构、NEON 浮点单元、硬浮点(hard-float)以及 Cortex-A7 CPU 目标。此外,--sysroot 也正确指向了目标平台的根文件系统。(前期啥都是跟原子的教程走的)

1. 清理前期编译产生的东西

在重新配置和编译之前,确保清理之前的编译结果。运行以下命令:

make distclean

注意:如果是第一次编译,是没有Makefile的,所以不用清理。

2. 配置脚本未正确应用交叉编译工具链

在运行 configure 脚本时,确保指定了正确的交叉编译工具链和目标平台。运行以下命令:

./configure --host=arm-poky-linux-gnueabi \
            --prefix=/home/alientek/fftw \
            --enable-shared \
            CC="$CC"
  • --host=arm-poky-linux-gnueabi:指定目标平台为 ARM。
  • --prefix=/home/alientek/fftw:指定安装路径。
  • --enable-shared:生成共享库(.so 文件)。
  • CC="$CC":使用环境变量中定义的交叉编译器。

3. 重新编译和安装

运行以下命令重新编译并安装:

make
make install

4. 验证生成的库文件

检查生成的库文件是否为 ARM 架构:

file /home/alientek/fftw/lib/libfftw3.so.3.6.10

输出如下内容:

libfftw3.so.3.6.10: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=..., not stripped

5. 检查编译日志

如果生成的库文件仍然是 x86 架构,检查编译日志,确认是否使用了正确的交叉编译器。在运行 make 时,查看输出日志,确保调用了 arm-poky-linux-gnueabi-gcc 而不是系统的 gcc


6. 写在最后

到此:就成功了。
之前一直编译的结果一直是X86-32位的,不知道何种原因。后来查资料发现是交叉编译工具链没启用。浪费好多时间。
如果不会导入交叉编译工具链,请查看我之气的博文。
https://blog.csdn.net/weixin_53061242/article/details/141144573如何导入交叉编译工具链

你可能感兴趣的:(arm开发)