你好,我是 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 文件。