我需要在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工具链交叉编译库。但有人可以请我提供程序吗?
用于windows的libgsl.a和libgslcblas.a预编译库
这些不适用于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
,您就可以使用了它。