2013-01-06 125 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