当我尝试使用 arm-linux-gcc 时找不到 -lgsl

当我尝试使用 arm-linux-gcc 时找不到 -lgsl

你好,我是 Ubuntu 新手。

我现在使用的是 Lubuntu 15.04。arm-linux-gcc 和 gsl 已经安装,我可以使用 gcc 和 gsl 编译 exe 文件。但是当我尝试使用 arm-linux-gcc 编译 exe 文件时,我收到错误

“/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld:找不到-lgsl”

这是我用于交叉编译的代码。

 $ arm-linux-gcc -o fft_test fft_test.c -L/home/peter/gsl/lib -I/home/peter/gsl/include -lgsl -lgslcblas -lm

答案1

看来您没有在系统中安装 libgsl,因为路径/home/peter/gsl不是 Ubuntu 安装二进制文件的路径。我只能假设您只从 GNU 服务器下载了 libgls 的源代码并将其解压到/home/peter/gsl。这不是一种规范的方法。您不需要手动下载 libgsl,因为 Ubuntu 已经从其在线存储库中以软件包形式提供了数千个库和工具。要管理软件包(下载、安装和删除),您应该使用该apt-get工具。

更新:正如评论中所建议的,您正在尝试交叉编译您的应用程序以在 ARM 平台上运行。这需要一些额外的步骤。我假设安装在您的 ARM 设备上的 Linux 发行版是 32 位的,并且使用 armhf/hard-float ABI (顺便说一句,Ubuntu 官方不提供软浮点二进制文件)。

向您的 Ubuntu 添加新的架构和在线存储库:

REL=$(lsb_release -sc)
sudo dpkg --add-architecture armhf

sudo add-apt-repository "deb [arch=armhf] http://ports.ubuntu.com/ ${REL} main universe multiverse restricted"
sudo add-apt-repository "deb [arch=armhf] http://ports.ubuntu.com/ ${REL}-updates main universe multiverse restricted"
sudo add-apt-repository "deb [arch=armhf] http://ports.ubuntu.com/ ${REL}-security main universe multiverse restricted"
sudo add-apt-repository "deb [arch=armhf] http://ports.ubuntu.com/ ${REL}-restricted main universe multiverse restricted"
sudo add-apt-repository "deb [arch=armhf] http://ports.ubuntu.com/ ${REL}-backports main universe multiverse restricted"

sudo apt-get update

现在可以安装交叉编译工具和 ARM 版本的 libgsl:

sudo apt-get install crossbuild-essential-armhf libgsl0-dev:armhf

现在您可以尝试编译您的应用程序:

arm-linux-gnueabihf-gcc -o fft_test fft_test.c -lgsl -lgslcblas -lm

没有-L参数,因为编译器现在可以从系统文件夹访问所有 libgsl 文件。

相关内容