【问题标题】:How to cross compile GSL library for arm-none-eabi-gcc?如何为 arm-none-eabi-gcc 交叉编译 GSL 库?
【发布时间】:2019-06-19 02:23:26
【问题描述】:

我需要在 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 工具链交叉编译库。但是有人也可以提供我的程序吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 嗨@inaki。我尝试使用您的建议并能够编译 libaray。现在我没有得到未定义的参考错误,而是现在我得到了这样的结果:D:\Shreyas\newtest\gsl_arm\lib\libgsl.a: error adding symbols: File format not recognizedcollect2.exe: error: ld returned 1 exit statusmake: *** [newtest30419.axf] Error 1
    • @Shreyas 您在编译或运行时遇到错误吗?如果您正在编译,是否所有其他设置都适合为嵌入式平台编译?如果你在运行,你是在嵌入式平台上运行的吗?
    • 我正在使用 lpcxpresso IDE 对我的板进行编程。构建程序时出现错误
    • 请看这篇文章:[链接] (stackoverflow.com/questions/55950091/…)
    • 我不知道。尝试删除所有 gsl 内容并进行全新安装
    【解决方案2】:

    用于 windows 的 libgsl.a 和 libgslcblas.a 预编译库

    那些不适用于 ARM。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 2014-11-14
      • 2016-12-26
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多