2013-01-06 9 views
17

Ich versuche, die Gnu Arm Toolchain für Ubuntu zu installieren. Ich habe zuerst den Teer von CodeSourcery heruntergeladen. Wenn ich jedoch in den bin-Ordner gehe, kann ich keine der Binärdateien ausführen. Ich habe es mit ./ und ohne versucht und es in den PATH gebracht und es sagt mir immer "Command not Found", aber die Datei befindet sich in dem Ordner direkt vor mir. Dann habe ich versucht, sudo apt-get installieren gcc-arm-linux-gnueabi außer, nachdem es sagt, es hat erfolgreich installiert, ich kann es nicht mit whereis gcc-arm-linux-gnueabi finden. Kann jemand helfen?gcc-arm-linux-gnueabi Befehl nicht gefunden

+0

Wenn Sie aus dem Quellcode installieren, müssen Sie die Quelle kompilieren und die Bin installieren. Wenn Sie jedoch kompiliertes Bin herunterladen, können Sie es ausführen. könnte mehr Informationen geben, nachdem Sie apt es zu installieren. versuche, 'sudo find/-name" * gcc-arm * "' zu verwenden, um zu finden, ob es einige bin –

+6

apt-get install ia32-libs gibt. Sie versuchen, 32-Bit-Binärdateien auf einer 64-Bit-Linux-Installation auszuführen. Gewesen, gemacht ... –

Antwort

1

versuchen, den folgenden Befehl ein:

which gcc-arm-linux-gnueabi 

Es ist sehr wahrscheinlich der Befehl in /usr/bin installiert ist.

11

CodeSourcery Konvention ist Präfix arm-none-linux-gnueabi- für alle ausführbaren Dateien, nicht gcc-arm-linux-gnueabi, die Sie erwähnen. Der Standardname für CodeSourcery gcc lautet also arm-none-linux-gnueabi-gcc.

Nachdem Sie CodeSourcery G ++ installiert haben, müssen Sie das CodeSourcery-Verzeichnis in Ihre PATH einfügen.

Normalerweise bevorzuge ich CodeSourcery in Verzeichnis wie /opt/arm-2010q1 oder etwas ähnliches zu installieren. Wenn Sie nicht wissen, wo Sie es installiert haben, können Sie es mit locate arm-none-linux-gnueabi-gcc finden, jedoch müssen Sie möglicherweise zwingen, Ihre locate db mit sudo updatedb zu aktualisieren, bevor locate ordnungsgemäß funktioniert.

Nachdem Sie ermittelt haben, wo Ihre CodeSourcery installiert ist, fügen Sie Ihre PATH durch ~/.bashrc wie diese Bearbeitung:

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

Auch ist es üblich und sehr bequem

CROSS_COMPILE=arm-none-linux-gnueabi- 

in Ihrem zu definieren .bashrc, denn mit CROSS_COMPILE definiert, verwenden die meisten Tools automatisch den richtigen Compiler für die ARM-Kompilierung, ohne dass Sie etwas tun.

+0

Es ist keine CodeSourcery-Konvention, es ist eine GNU/GCC-Sache namens Target-Triplet mit der Form * cpu-vendor-os * – iabdalkader

+0

@mux: Ich habe nicht gesagt, dass es CodeSourcery-Konvention war. Ich habe nur gesagt, dass es üblich ist und die meisten Werkzeuge werden es automatisch benutzen (was sehr gut wegen der GCC-Ziel-Triplet-Sache sein kann). – mvp

1

Sie haben eine Toolchain installiert, die für i686 auf einer Box kompiliert wurde, auf der ein x86_64-Benutzerland läuft.

Verwenden Sie eine i686-VM.

+1

Mit Multiarch unter Linux ist dies kaum ein guter Rat, besonders für etwas so Kleines wie das Einrichten eines Compilers für Cross-Compiling. – rbaleksandar

19

Kompilieren Sie auf einem 64-Bit-Betriebssystem? Versuchen Sie:

sudo apt-get install ia32-libs 

Ich hatte das gleiche Problem beim Versuch, den Raspberry Pi Kernel zu kompilieren. Ich kompilierte auf Ubuntu 12.04 64-Bit und die Toolchain benötigt ia32-libs, um auf einem 64-Bit-System zu arbeiten.

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

+2

Auf Ubuntu, wenn ich diesen Befehl gebe, wirft er Fehler - Paket ia32-libs ist nicht verfügbar, wird aber von einem anderen Paket bezeichnet. –

+1

@MadhavanKumar versuchen Sie es sudo apt-get installieren lib32z1 lib32ncurses5 lib32bz2-1.0 –

2

Es ist ein wenig kontraintuitiv. Die Toolchain heißt gcc-arm-linux-gnueabi.So rufen Sie die Werkzeuge, führen Sie die folgenden Schritte aus: Arm-linux-gnueabi-xxx

xxx ist gcc oder ar oder ld usw.

5

, wenn Sie auf 64-Bit-Betriebssystem sind dann Sie müssen diese zusätzlichen Bibliotheken installieren.

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

Auf Debian 8 scheint es, dass die dritte fehlt: Paket lib32bz2-1.0 ist nicht verfügbar, wird aber von einem anderen Paket verwendet. Dies kann bedeuten, dass das Paket fehlt, veraltet ist oder ist nur aus einer anderen Quelle verfügbar E: Paket ‚lib32bz2-1.0‘ hat keine Installation Kandidat – Will

5

bekamen den gleichen Fehler beim Versuch, den Raspberry Pi-Kernel auf Ubunto 14.04.03 64bit unter VM zu überqueren kompilieren. Die Lösung wurde gefunden here:

-Install-Pakete für Cross-Compiling auf der Ubuntu-Box verwendet.

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

-Download die Werkzeugkette

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

-Add die Werkzeugkette auf Ihrem Weg

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

Bekanntmachung der x64-Version in dem Pfad Befehl

9

fixiert, mit:

sudo apt-get install gcc-arm* 
3

Wenn Sie auf einem 64-Bit-Build von Ubuntu oder Debian sind (siehe z. 'Cat/proc/version') sollten Sie einfach die 64-Bit-Cross-Compiler verwenden, wenn Sie

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

dann die 64-Bit-Tools sind in

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

Verwendung dieses Verzeichnis für die gcc-Toolchain. Eine nützliche Anleitung zum Kompilieren, dass ich hier Building and compiling Raspberry PI Kernel verfügbar gefolgt (mit dem -x64 Weg von oben als $ {CCPREFIX})

+1

Für mich auf Debian 8, folgen Sie den Anweisungen hier: [ RPi-Kernel] (https://www.raspberrypi.org/documentation/linux/kernel/building.md) Ich musste den vollständigen PFAD in CROSS_COMPILE setzen, obwohl ich PATH wie gesagt eingestellt hatte. Also musste ich das tun: 'sudo machen ARCH = arm CROSS_COMPILE =/home/wird/kernel/mybuild/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-INSTALL_MOD_PATH = mnt/ext4 modules_install> makemodules6.txt' – Will

4

ich auch das gleiche Problem konfrontiert wurde und gelöst es nach der folgenden Abhängigkeit der Installation:

sudo apt-get install lib32z1-dev