如何为arm-none-eabi-gcc交叉编译GSL库?

How to cross compile GSL library for arm-none-eabi-gcc?

我需要在 LPCXpresso 4367(ARM CORTEX M4) 上的程序中使用 GSL 库。我尝试遵循 LPC xpresso 的库链接程序,但 MCU 链接器给我这些错误:

MCUXpressoIDE_10.3.0_2200\workspace\test1\Debug/../src/test1.c:53: undefined reference to 'gsl_linalg_LU_decomp'

MCUXpressoIDE_10.3.0_2200\workspace\test1\Debug/../src/test1.c:56: undefined reference to 'gsl_matrix_alloc'

MCUXpressoIDE_10.3.0_2200\workspace\test1\Debug/../src/test1.c:57: undefined reference to 'gsl_linalg_LU_invert'

其他功能依此类推。

我有 windows 的 libgsl.a 和 libgslcblas.a 预编译库,它们在 windows 上的代码块上使用 GCC 编译器完美运行。

我读到我需要为 arm-none-eabi-gcc 工具链交叉编译库。但是有人能把程序也给我吗?

the libgsl.a and libgslcblas.a precompiled libraries for windows

那些不适用于 ARM。

为了在另一个平台上工作,需要使用适当的编译器(和设置 - Cortex-M4F 需要 Thumb2 指令集)从源代码编译这些库。

由于这些库是为 Windows 预编译的,所以它们不适用于 ARM(正如另一个答案中所说)

您需要先交叉编译库。如果你按照 this 程序安装 GSL 库,你只需要根据你的平台更改 ./config 中的参数,例如我使用:

./config --host=arm-linux-gnueabihf --prefix=/home/yourname/gsl_arm

在包含 gsl-2.5 文件的 .zip 文件中,有一个名为 INSTALL 的文件。在那里您可以找到有关交叉编译选项的更多详细信息。

如果您已经为不同的设置编译了库,请务必make clean。当您在终端上 运行 make check 交叉编译库后,您可能会遇到错误,但它仍然有效。继续 make install,您就可以使用它了。