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

时间:2019-01-25 09:12:35

标签: arm cross-compiling microcontroller cortex-m nxp-microcontroller

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

  

MCUXpressoIDE_10.3.0_2200 \ workspace \ test1 \ Debug /../ src / test1.c:53:对'gsl_linalg_LU_decomp'的未定义引用

     

MCUXpressoIDE_10.3.0_2200 \ workspace \ test1 \ Debug /../ src / test1.c:56:对'gsl_matrix_alloc'的未定义引用

     

MCUXpressoIDE_10.3.0_2200 \ workspace \ test1 \ Debug /../ src / test1.c:57:对'gsl_linalg_LU_invert'的未定义引用

以及其他功能。

我有针对Windows的libgsl.a和libgslcblas.a预编译库,它们可以在带有GCC编译器的Windows上的代码块上完美运行。

我读到我需要交叉编译arm-none-eabi-gcc工具链的库。但是也可以有人给我提供程序吗?

2 个答案:

答案 0 :(得分:0)

  

libgsl.a和libgslcblas.a Windows的预编译库

那些对ARM无效。

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

答案 1 :(得分:0)

由于这些库是为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,您就可以使用它了。