glibc mit Linaro toolchain für ARM

OP #4863459
Lesenswert?
• ▲
▼
Hallo zusammen

Ich versuche aktuell auf Ubuntu ein Programm für ein Embeddedlinux 
target zu erstellen. Das Target is ein Evalboard von NXP mit einem i.MX6 
und LCD.

Dies versuche ich aktuell mit QT
Dabei gehe ich grundsätzlich nach diesem Tutorial vor:
http://wiki.qt.io/RaspberryPi_Beginners_Guide

Ich verwende allerdings folgende Toolchain:
gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf

Nun stecke ich aber fest.
Compiling qtbase

Hier gibt es ein Problem.
Ich rufe das ganze wie folgt auf:
1
 ./configure -device linux-imx6-g++ -device-option CROSS_COMPILE=/opt/toolchain/bin/arm-linux-gnueabihf- -sysroot ~/Schreibtisch/LinuxDevelopment/rootfsOverlay -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -prefix /usr/local/qt5imx -hostprefix /usr/local/qt5imx

Danach hats einiges gemacht und endet dann mit:
1
ERROR: Cannot compile a minimal program. The toolchain or QMakeSpec is broken.

Ein blick in den Log sagt:
1
> /opt/toolchain/bin/arm-linux-gnueabihf-g++ -c -pipe -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 -mfloat-abi=hard --sysroot=/home/holger/Schreibtisch/LinuxDevelopment/rootfsOverlay -O2 -Wall -W -fPIC  -I. -I/opt/QTLIB/qt5/qtbase/mkspecs/devices/linux-imx6-g++ -o verifyspec.o verifyspec.cpp
2
> /opt/toolchain/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/home/holger/Schreibtisch/LinuxDevelopment/rootfsOverlay -Wl,-O1 -fuse-ld=gold -o verifyspec verifyspec.o    
3
> /opt/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.2.1/../../../../arm-linux-gnueabihf/bin/ld.gold: error: cannot open crt1.o: Datei oder Verzeichnis nicht gefunden
4
> /opt/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.2.1/../../../../arm-linux-gnueabihf/bin/ld.gold: error: cannot open crti.o: Datei oder Verzeichnis nicht gefunden
5
> /opt/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.2.1/../../../../arm-linux-gnueabihf/bin/ld.gold: error: cannot open crtn.o: Datei oder Verzeichnis nicht gefunden
6
> /opt/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.2.1/../../../../arm-linux-gnueabihf/bin/ld.gold: error: cannot find -lm
7
> /opt/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.2.1/../../../../arm-linux-gnueabihf/bin/ld.gold: error: cannot find -lc
8
> collect2: error: ld returned 1 exit status
9
> Makefile:64: recipe for target 'verifyspec' failed
10
> make: *** [verifyspec] Error 1


Es findet also die Datei crt1.o nicht. Nebst anderen.
Nach google, scheint es so als ob mir die glibc fehlen würde.

Nun, dachte ich also glibc runterladen und mit dem arm compiler 
compilieren. Dann gabs aber auch errors.
1
<stdin>: In function 'dummy':
2
<stdin>:10:36: error: 'REG_RBP' undeclared (first use in this function)
3
<stdin>:9:26: note: in expansion of macro 'ucontext'
4
<stdin>:10:20: note: in expansion of macro 'mcontext'
5
<stdin>:11:61: note: in expansion of macro 'mreg'
6
<stdin>:10:36: note: each undeclared identifier is reported only once for each function it appears in
7
<stdin>:9:26: note: in expansion of macro 'ucontext'
8
<stdin>:10:20: note: in expansion of macro 'mcontext'
9
<stdin>:11:61: note: in expansion of macro 'mreg'
10
<stdin>:10:36: error: 'REG_RSP' undeclared (first use in this function)


Nun bin ich am Ende mit meinem Wissen und mit Google.
Ich hoffe jemand von euch kann mir weiterhelfen.

Ich möchte einfach nur QT Apps unter ubuntu für mein i.MX6 Zielsystem 
schreiben. Und dafür sitze ich nun schon den ganzen Samstag vor dem PC 
und hab auch gestern Abend schon begonnen. Bisher ohne Erfolg.

Danke
OP #4863534
Lesenswert?
• ▲
▼
Arc N. schrieb:
> Glibc gibt's auch als Binary...
> 
https://releases.linaro.org/components/toolchain/binaries/latest/arm-linux-gnueabihf/

Vielen Dank für diesen Hinweis.
Das hab ich wohl völlig übersehen.
Da drinn hab ich auch die crt1.o gefunden.

Nun wirds spannend. Das binary von deinem Link ist ein sysroot "abbild".
Muss ich die dateien so wie sie sind auf meinem zielsystem also auf dem 
evalboard auf die sd-karte kopieren?

Genügt es wenn ich /usr/lib kopiere (darin befinden sich die fehlenden 
dateien) oder muss ich alles kopieren?

Unter meinem als erstes geposteten tutorial link, gibt es die anweisung 
mittels
1
./fixQualifiedLibraryPaths

Die Pfade anzupassen.
Bei genauerem hinsehen, sieht man, dass dieses skript alle absoluten 
symlinks in relative ändert.

(Dies habe ich aus einem anderen, neueren skript 
sysroot-relativelinks.py entnommen)

Kann mir jemand erklären in wie fern dies notwendig ist? bzw was dies 
bewirkt?

Den zweiten link schaue ich mir auch noch näher an.
Vermutlich ist es die Mischung aus beiden Links welche zum Ziel führen 
wird.
#4864845
Lesenswert?
• ▲
▼
Holger K. schrieb:
> Markus F. schrieb:
>> apt-get install g++-arm-linux-gnueabihf
>
> Klingt ja fast zu schön um Wahr zu sein.
> Und wo liegt die dann? Damit ich den Pfad bei Buildroot angeben kann.
> Und welche GCC Version ist dass dann?
>
> Danke

Da:
1
$ arm-linux-gnueabihf-g++ -v
2
Using built-in specs.
3
COLLECT_GCC=arm-linux-gnueabihf-g++
4
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabihf/6/lto-wrapper
5
Target: arm-linux-gnueabihf
6
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 6.2.0-5ubuntu12' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-armhf-cross/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-armhf-cross --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-armhf-cross --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libgcj --enable-objc-gc --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-multilib --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-linux-gnueabihf --program-prefix=arm-linux-gnueabihf- --includedir=/usr/arm-linux-gnueabihf/include
7
Thread model: posix
8
gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12)

sysroot ist /

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.