2013-01-06 85 views
17

我正在尝试为ubuntu安装gnu arm toolchain。我首先从CodeSourcery下载了tar。但是,当我进入bin文件夹时,我无法运行任何二进制文件。我已经尝试过./和没有,并把它放在PATH中,它一直告诉我“命令未找到”,但文件在我面前的文件夹中。然后我尝试了sudo apt-get install gcc-arm-linux-gnueabi,除非它说它已经成功安装,我无法在whereis gcc-arm-linux-gnueabi中找到它。谁能帮忙?gcc-arm-linux-gnueabi命令未找到

+0

如果您从源代码安装,则需要编译源代码并安装bin。但是,如果您下载编译的bin,您可以运行它。在使用apt来安装它之后,可以提供更多信息。尝试使用'sudo find/-name“* gcc-arm *”'来查找是否有某个bin –

+6

apt-get install ia32-libs。您试图在64位Linux安装上运行32位二进制文​​件。在那里,这样做... –

回答

1

尝试使用以下命令:

which gcc-arm-linux-gnueabi 

它很可能就是命令安装在/usr/bin

11

CodeSourcery惯例是对所有可执行文件使用前缀arm-none-linux-gnueabi-,而不是您提到的gcc-arm-linux-gnueabi。因此,CodeSourcery gcc的标准名称为arm-none-linux-gnueabi-gcc

安装CodeSourcery G ++后,您需要将CodeSourcery目录添加到您的PATH中。

通常,我更喜欢将CodeSourcery安装到类似/opt/arm-2010q1之类的目录中。如果您不知道安装位置,可以使用locate arm-none-linux-gnueabi-gcc找到它,但是您可能需要强制更新您的定位分区,使用sudo updatedb,然后locate才能正常工作。

在您确定安装在您的CodeSourcery的地方,通过编辑~/.bashrc这样其添加到您的PATH:

PATH=/opt/arm-2010q1/bin:$PATH 

而且,这是习惯,非常方便地定义

CROSS_COMPILE=arm-none-linux-gnueabi- 

.bashrc,因为在定义了CROSS_COMPILE之后,大多数工具都会自动使用正确的编译器进行ARM编译,而无需执行任何操作。

+0

这不是CodeSourcery惯例,它是GNU/GCC的一种叫做target-triplet的形式* cpu-vendor-os * – iabdalkader

+0

@mux:我没有说它是CodeSourcery惯例。我只是说这是习惯性的,大多数工具会自动开始使用它(很可能是因为GCC target-triplet事情)。 – mvp

1

您已经在运行x86_64用户空间的盒子上安装了针对i686编译的工具链。

使用i686虚拟机。

+1

在Linux上提供多种体系结构并不是什么好建议,特别是对于像设置编译器进行交叉编译那样小的建议。 – rbaleksandar

19

您是在64位操作系统上编译?试试:

sudo apt-get install ia32-libs 

我在尝试编译Raspberry Pi内核时遇到了同样的问题。我在Ubuntu 12.04 64位上交叉编译,工具链要求ia32-libs在64位系统上工作。

http://hertaville.com/2012/09/28/development-environment-raspberry-pi-cross-compiler/

+2

在ubuntu上,当我给出这个命令时,它会抛出错误 - 软件包ia32-libs不可用,但被其他软件包引用。 –

+1

@MadhavanKumar尝试这一个sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 –

2

它有点反直觉。该工具链被称为gcc-arm-linux-gnueabi。要调用的工具,执行以下命令:ARM-Linux的gnueabi-XXX

其中xxx为GCCARLD

5

,如果你是在64位操作系统,那么你需要安装这个额外的库。

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 
+0

在Debian 8上它似乎缺少第三个: 包lib32bz2-1。0不可用,但被另一个包引用。 这可能意味着包丢失,已过时,或 只能从其他来源 E:包“lib32bz2-1.0”没有安装候选人 – Will

5

了试图穿越汇编VM下ubunto 03年4月14日的树莓派内核时相同的错误。发现解决方案here

- 在Ubuntu盒子上安装用于交叉编译的软件包。

sudo apt-get install gcc-arm-linux-gnueabi make git-core ncurses-dev 

- 下载工具链

cd ~ 
git clone https://github.com/raspberrypi/tools 

- 添加工具链到你的路径

PATH=$PATH:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 

通知x64版本的路径命令

9

固定,使用:

sudo apt-get install gcc-arm* 
3

如果您使用的是64位版本的ubuntu或debian(请参阅“猫的/ proc /版本”),你只需要使用64位的交叉编译器,如果你克隆

git clone https://github.com/raspberrypi/tools 

那么64位工具在

tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64 

使用该目录为GCC工具链。 编制一个有用的教程,我也跟着可以在这里找到Building and compiling Raspberry PI Kernel(使用-x64路径从上面的$ {} CCPREFIX)

+1

对我来说,在Debian 8,这里的操作说明: [ RPi内核](https://www.raspberrypi.org/documentation/linux/kernel/building.md) 尽管设置了PATH,但我必须将完整的PATH放入CROSS_COMPILE。所以我不得不这样做: 'sudo make ARCH = arm CROSS_COMPILE =/home/will/kernel/mybuild/gcc-linaro-arm-linux-gnueabihf-raspbian -x64/bin/arm-linux-gnueabihf- INSTALL_MOD_PATH = mnt/ext4 modules_install> makemodules6.txt' – Will

4

我也面临着同样的问题,安装下面的依赖后,解决它:

sudo apt-get install lib32z1-dev