Hallo, kann mir jemand erklären was der Unterschied zwischen beiden ist und ob ich mein HalloWelt Beispiel, welches mit arm-linux-gnueabi-gcc funktioniert auch mit dem arm-elf-gcc bauen kann? Danke Das z.B. bau ich unter Ubuntu 12.04 (x86) und funktiniert bzw. läuft dann auf dem Arm-Cortex A9: arm-linux-gnueabi-gcc -o helloworld helloworld.c http://zedboard.org/content/zedboard-setting-arm-development-environment-linux
arm-elf-* benutzt ein API, welches meiner Kenntnis nach mittlerweile als veraltet gilt. Aktuell sollte man nur noch arm-*-eabi-* benutzen.
Jörg Wunsch schrieb: > arm-elf-* benutzt ein API, welches meiner Kenntnis nach ... Heißt das nicht ABI - Application Binary Interface? http://en.wikipedia.org/wiki/Application_binary_interface
Mano Wee schrieb: > Heißt das nicht ABI - Application Binary Interface? Ja, klar.
Kann ich das trotz das es veratlet ist mit dem arm-elf-gcc bauen und wenn ja welche optionen muss ich angeben? Danke P.S. in meinem arm-linux-gnueabi-gcc fehlt irgendwie die ranlib, weswegen ich den arm-elf-gcc versuchen wollte
Gast
#3181325
Paul E. schrieb: > Kann ich das trotz das es veratlet ist mit dem arm-elf-gcc bauen und > wenn ja welche optionen muss ich angeben? > Danke Wenn du mal auf http://wiki.debian.org/ArmEabiPort nachsehen würdest ist dieses OABI (Old ABI) und EABI (Embedded ABI) noch ein wenig komplexer ... Laut deren Seite sollte es mit -mabi=aapcs-linux -mfloat-abi=soft -meabi=4 laufen.
Paul E. schrieb: > in meinem arm-linux-gnueabi-gcc fehlt irgendwie die ranlib Dann sieh doch zu, dass du die aktuelle Toolchain komplett bekommst, statt die Flucht nach hinten anzutreten.
Einen Tipp wo ich die komplette Toolchain herbekomme? Den Kompiler selbst habe ich unter Ubuntu mit sudo apt-get install gcc-arm-linux-gnueabi bekommen. Wohingegen ich den arm-elf-gcc komplett nach Anleitung gebaut habe: http://wiki.ubuntuusers.de/GNU_ARM-Toolchain Danke
Gast
#3181950
Für embedded ("bare metal"):
https://launchpad.net/gcc-arm-embedded
Gast
#3181968
Ich kenne ja Ubuntu nicht aber .... Siehe hier http://packages.ubuntu.com/search?lang=de&keywords=binutils&searchon=names Entweder binutils-arm-linux-gnueabi oder binutils-arm-linux-gnueabihf ersterer ist SoftFloat und letzterer ist HardFloat zum gcc hier http://packages.ubuntu.com/search?suite=default§ion=all&arch=any&lang=de&keywords=gcc&searchon=names Normalerweise sollt apt-get das aufdröseln, wenn du den gcc für ARM haben willst. ggf. solltest du das/die Paket(e) neu installieren.
Paul E. schrieb: > Einen Tipp wo ich die komplette Toolchain herbekomme? Kann man sich auch selbst bauen. Ist unter Linux nicht extrem schwierig.
Mhh meine Arm-Toolchain scheint zu funktionieren, das Ranlib wird aber scheinbar vom Host-Compiler vermisst: checking for i686-pc-linux-gnu-ranlib... no checking for ranlib... ranlib configure: error: "sorry...compiler not supported" Das ist ein Teil des Configure scripts, zu dem der Libary die ich Cross Compelieren möchte, als Host habe ich i868-linux-gnu gewählt, dessen ranlib er nicht findet. Wenn jemand eine Idee hat wäre ich dankbar.
Gast
#3182930
ranlib ist Teil der binutils. Das sollte auch auf deinem Host vorhanden sein, ggf ist irgendwie mal ein Symlink verloren gegangen ... Tippe mal i686-pc-linux-gnu- und drücke in der Shell die TAB-Taste (Bash-Completion) dann sollte in etwa so was auftauchen
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
Bei logischerweise alles mit dem i686-pc-lunux-gnu- prefix
Bei mir kommt da nicht annähernd so viel und auch nur wenn ich pc weg lasse. Das passiert in beiden virtuellen Ubuntus 12.04 und 11.04
1 | |
2 | |
3 | |
Gehören die Standartmässig zu Linux/Ubuntu oder hätte ich die irgendwann mal installieren müssen. P.S. die Bashcomplition funktionioert bei andern Sachen wie z.B. arm-linux ... einwandfrei
Gast
#3183061
Paul E. schrieb: > Bei mir kommt da nicht annähernd so viel und auch nur wenn ich pc weg > lasse. Das passiert in beiden virtuellen Ubuntus 12.04 und 11.04 >
1 | |
2 | |
3 | |
4 | |
> > Gehören die Standartmässig zu Linux/Ubuntu oder hätte ich die irgendwann > mal installieren müssen. > > P.S. die Bashcomplition funktionioert bei andern Sachen wie z.B. > arm-linux ... einwandfrei Soviel ich weiss ist gcc, binutils, make und linux-headers nicht in Ubuntu als default installiert (komme von Gentoo)
1 | |
sollt reichen. Es dürfte dann fast alles vorhanden sein. *-emerge ist Gentoo spezifisch ..
Danke, die scheinen alle installiert zu sein:
1 | |
2 | |
3 | |
4 | |
Hab für die header den folgende Zeile genutzt und den kleinen Buchstabendreher in binutils verändert:
1 | |
2 | |
Ausgabe von i686 ist immer noch:
1 | |
2 | |
3 | |
Andere Ideen?
Gast
#3183671
Hmm seltsam (aber noch nicht ganz) Was hast du denn für eine Config
1 | |
2 | |
Wie sieht es denn aus mit der bash completion bei
1 | |
aus.
nicht das du einen 64bit ?? VirtualPC hast und deine Toolchain nur 32bit
(i686) ist.
Sowas hatte ich schon mal wo ich von einem 64bit System in ein 32bit
System chroot'ed habe. configure erkannte mein 64bit Host und flog bei
dem 32bit Compiler auf die Fresse.
Ein
{code]
linux32 chroot
[/code]
war hier die Lösung.
Danke schon mal für deine Umfangreichen Bemühungen. Hier die Ausgabe
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
Bashcomplition für x86_64 liefert nichts.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
Ist ein Ubuntu 12.04.
Sieht bei mir bis auf die Reihenfolge erst mal genauso aus, trotzdem findet der Compiler für den i868-pc-linux-gnu kein ranlib ?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
Paul E. schrieb: > trotzdem > findet der Compiler für den i868-pc-linux-gnu kein ranlib Warum musst du auch den ganzen i686-pc-linux-gnu-Präfix da durchschleifen? Wenn ich hier "x86_64" eintippe (ist ein 64-bit-System) und dann <TAB> drücke, findet er auch kein ranlib mit diesem Präfix. Offenbar sind sich die Autoren der GCC- und Binutils-Pakete nicht einig, ob man die Binaries nun auch noch zusätzlich mit dem Präfixsalat installieren sollte oder nicht. Vielleicht probier' ich's ja hier auch mal, die ARM-Toolchain aufzusetzen. Auf diesem Ubuntu habe ich derzeit noch keine (auf CentOS und FreeBSD war's aber kein Problem).
Gast
#3184804
Das mit den Prefixen ist teilweise ein Problem von configure, gcc und
binutils.
Normalerweise dröselt das configure Script das alles aus, aber ...
bei mir ist z.B.
gcc ein Symlink auf x86_64-pc-linux-gnu-gcc
Das geht aber auch Rückwarts
Folgendes als User root sollte eigentlich reichen
cd /usr/bin
for f in ar as ld nm objdump ranlib readelf size strings strip; do
ln -s "$f" "i686-pc-linux-gnu-$f";
done
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.