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
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
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
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.
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 | elektroman@X200s ~ $ i686-pc-linux-uclibc- |
2 | i686-pc-linux-uclibc-addr2line i686-pc-linux-uclibc-gprof |
3 | i686-pc-linux-uclibc-ar i686-pc-linux-uclibc-ld |
4 | i686-pc-linux-uclibc-as i686-pc-linux-uclibc-ld.bfd |
5 | i686-pc-linux-uclibc-c++filt i686-pc-linux-uclibc-ldconfig |
6 | i686-pc-linux-uclibc-cpp i686-pc-linux-uclibc-ldd |
7 | i686-pc-linux-uclibc-cpp-4.7.2 i686-pc-linux-uclibc-ld.gold |
8 | i686-pc-linux-uclibc-elfedit i686-pc-linux-uclibc-nm |
9 | i686-pc-linux-uclibc-emerge i686-pc-linux-uclibc-objcopy |
10 | i686-pc-linux-uclibc-fix-root i686-pc-linux-uclibc-objdump |
11 | i686-pc-linux-uclibc-gcc i686-pc-linux-uclibc-pkg-config |
12 | i686-pc-linux-uclibc-gcc-4.7.2 i686-pc-linux-uclibc-ranlib |
13 | i686-pc-linux-uclibc-gcc-ar i686-pc-linux-uclibc-readelf |
14 | i686-pc-linux-uclibc-gcc-nm i686-pc-linux-uclibc-size |
15 | i686-pc-linux-uclibc-gcc-ranlib i686-pc-linux-uclibc-strings |
16 | i686-pc-linux-uclibc-gcov i686-pc-linux-uclibc-strip |
17 | i686-pc-linux-uclibc-gcov-4.7.2 |
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 | VM@VM-VirtualBox:~$ i686-linux-gnu- |
2 | i686-linux-gnu-cpp i686-linux-gnu-g++ i686-linux-gnu-gcc |
3 | i686-linux-gnu-cpp-4.5 i686-linux-gnu-g++-4.5 i686-linux-gnu-gcc-4.5 |
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
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 | > VM@VM-VirtualBox:~$ i686-linux-gnu- |
2 | > i686-linux-gnu-cpp i686-linux-gnu-g++ i686-linux-gnu-gcc |
3 | > i686-linux-gnu-cpp-4.5 i686-linux-gnu-g++-4.5 i686-linux-gnu-gcc-4.5 |
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 | apt-get install gcc bintuils make linux-headers |
sollt reichen. Es dürfte dann fast alles vorhanden sein. *-emerge ist Gentoo spezifisch ..
Danke, die scheinen alle installiert zu sein:
1 | gcc is already the newest version. |
2 | make is already the newest version. |
3 | binutils is already the newest version. |
4 | linux-headers-2.6.38-8-generic is already the newest version. |
Hab für die header den folgende Zeile genutzt und den kleinen Buchstabendreher in binutils verändert:
1 | sudo apt-get install linux-headers-$(uname -r) |
2 | sudo apt-get install binutils |
Ausgabe von i686 ist immer noch:
1 | VM@VM-VirtualBox:~$ i686-linux-gnu- |
2 | i686-linux-gnu-cpp i686-linux-gnu-g++ i686-linux-gnu-gcc |
3 | i686-linux-gnu-cpp-4.5 i686-linux-gnu-g++-4.5 i686-linux-gnu-gcc-4.5 |
Andere Ideen?
Hmm seltsam (aber noch nicht ganz) Was hast du denn für eine Config
1 | cat /proc/cpuinfo |
2 | uname -a |
Wie sieht es denn aus mit der bash completion bei
1 | x86_64-pc-linux-gnu- |
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 | VM@VM-VirtualBox:~$ uname -a |
2 | Linux systemc-VirtualBox 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU/Linux |
3 | |
4 | VM@VM-VirtualBox:~$ cat /proc/cpuinfo |
5 | processor : 0 |
6 | vendor_id : GenuineIntel |
7 | cpu family : 6 |
8 | model : 23 |
9 | model name : Intel(R) Core(TM)2 Duo CPU P9500 @ 2.53GHz |
10 | stepping : 10 |
11 | cpu MHz : 2428.984 |
12 | cache size : 6144 KB |
13 | fdiv_bug : no |
14 | hlt_bug : no |
15 | f00f_bug : no |
16 | coma_bug : no |
17 | fpu : yes |
18 | fpu_exception : yes |
19 | cpuid level : 5 |
20 | wp : yes |
21 | flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx lm constant_tsc up pni monitor ssse3 lahf_lm |
22 | bogomips : 4857.96 |
23 | clflush size : 64 |
24 | cache_alignment : 64 |
25 | address sizes : 36 bits physical, 48 bits virtual |
26 | power management: |
Bashcomplition für x86_64 liefert nichts.
1 | % dpkg-query -L binutils | fgrep bin/ |
2 | /usr/bin/addr2line |
3 | /usr/bin/ar |
4 | /usr/bin/strings |
5 | /usr/bin/readelf |
6 | /usr/bin/size |
7 | /usr/bin/gprof |
8 | /usr/bin/objcopy |
9 | /usr/bin/ld.gold |
10 | /usr/bin/c++filt |
11 | /usr/bin/ld.bfd |
12 | /usr/bin/as |
13 | /usr/bin/objdump |
14 | /usr/bin/nm |
15 | /usr/bin/elfedit |
16 | /usr/bin/strip |
17 | /usr/bin/ranlib |
18 | /usr/bin/ld |
19 | /usr/bin/gold |
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 | VM@VM-VirtualBox:~$ dpkg-query -L binutils | fgrep bin/ |
2 | /usr/bin/size |
3 | /usr/bin/objdump |
4 | /usr/bin/ar |
5 | /usr/bin/strings |
6 | /usr/bin/ranlib |
7 | /usr/bin/objcopy |
8 | /usr/bin/addr2line |
9 | /usr/bin/readelf |
10 | /usr/bin/elfedit |
11 | /usr/bin/nm |
12 | /usr/bin/strip |
13 | /usr/bin/c++filt |
14 | /usr/bin/as |
15 | /usr/bin/ld.gold |
16 | /usr/bin/gprof |
17 | /usr/bin/ld.bfd |
18 | /usr/bin/ld |
19 | /usr/bin/gold |
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).
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.