Qt-Embedded Arm

Alles rund um die Programmierung mit Qt
Antworten
juliaABC1979
Beiträge: 2
Registriert: 9. April 2011 09:17

Qt-Embedded Arm

Beitrag von juliaABC1979 »

Hallo,
ich muss dringend SW für ARM coden, bekomme aber bei QtCreator unter Ubuntu die meldung:

/usr/local/Trolltech/QtEmbedded-4.7.2-arm/lib/libQtGui.so: undefined reference to `d17'
/usr/local/Trolltech/QtEmbedded-4.7.2-arm/lib/libQtGui.so: undefined reference to `q0'
/usr/local/Trolltech/QtEmbedded-4.7.2-arm/lib/libQtGui.so: undefined reference to `d18'

Mein Vorgehensweise:

tslib:

./autogen.sh

export ac_cv_func_malloc_0_nonnull=yes

./configure CC=arm-cortexa8-linux-gnueabi-gcc CXX=arm-cortexa8-linux-gnueabi-g++ -host=arm-cortexa8-linux-gnueabi
–target=arm-cortexa8-linux-gnueabi –enable-static=no –enable-shared=yes
make –k
sudo « make –k install »

qmakeke.conf in QtEmbedded.4.7.2mkspecs/qws/linux-arm-g++:
QMAKE_CC = arm-cortexa8-linux-gnueabi-gcc
QMAKE_CXX = arm-cortexa8-linux-gnueabi-g++
QMAKE_LINK = arm-cortexa8-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-cortexa8-linux-gnueabi-g++
QMAKE_AR = arm-cortexa8-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-cortexa8-linux-gnueabi-objcopy
QMAKE_RANLIB = arm-cortexa8-linux-gnueabi-ranlib

QMAKE_LFLAGS += -Wl,-rpath-link=/usr/local/lib
QMAKE_INCDIR += /usr/local/include
QMAKE_LIBDIR += /usr/local/lib

und dann:
./configure -embedded arm -no-armfpa -little-endian -qt-gfx-transformed -qt-gfx-linuxfb -nomake demos -nomake examples -no-svg -no-phonon -no-qt3support -no-feature-CURSOR -no-webkit -qt-mouse-tslib

make und make install

QtCreator-Path enthält CrossCompiler(arm-cortexa8-linux). Ich kann mit QT_Path4.7.3 kompilieren und ausführen, mit QT_Embedded4.7.2 aber nicht kompilieren (Kann in Creator eingestellt werden) .

Kann mir wer helfen? Ich habe QtEmbedded zich mal kompiliert, immer mit anderer Konfiguration -geht trotzdem nich. Also bitte, jede Hilfe wird dankbar angenommen.
juliaABC1979
Beiträge: 2
Registriert: 9. April 2011 09:17

BITTE HILFE!!!!! QtEmbedded

Beitrag von juliaABC1979 »

Mein genaue Fehlermeldung unter Ubuntu nach make:

arm-cortexa8-linux-gnueabi-g++ -L/usr/local/lib -Wl,-rpath-link=/usr/local/lib -Wl,-O1 -Wl,-rpath,/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib -o test main.o -L/usr/local/lib -L/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib -lQtGui -L/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib -L/usr/local/lib -lQtNetwork -lQtCore -lpthread
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/libQtGui.so: undefined reference to `d16'
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/libQtGui.so: undefined reference to `d17'
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/libQtGui.so: undefined reference to `d18'
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/libQtGui.so: undefined reference to `d19'
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/libQtGui.so: undefined reference to `d26'
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/libQtGui.so: undefined reference to `d27'
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/libQtGui.so: undefined reference to `d28'
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/libQtGui.so: undefined reference to `d29'
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/libQtGui.so: undefined reference to `d21'
collect2: ld returned 1 exit status

Kann jemand was damit anfange? Bitte um Hilfe...
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Nur nicht, dass ein falscher Eindruck entsteht: das ist Stochern im Heuhaufen:

Für mich klingen diese "dXY" nach irgendwelchen ARM-Registern. Keine Ahnung, warum das "C-Referenzen" sind und warum die nicht gefunden werden.

Aber: was mich stutzig macht ist diese Mischung der Pfade beim Crosscompiler:

arm-cortexa8-linux-gnueabi-g++ -L/usr/local/lib -Wl,-rpath-link=/usr/local/lib -Wl,-O1 -Wl,-rpath,/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib -o test main.o -L/usr/local/lib -L/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib -lQtGui -L/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib -L/usr/local/lib -lQtNetwork -lQtCore -lpthread

Ist das ok so? Ich habe gerade kein ARM-Buildsystem zur Hand, aber ich meinte, bei mir hätte ich alle Pfade sauber vom Host-System getrennt (so das der Linker auf gar keinen Fall irgendwelche Libraries vom x86-Host findet).

Wie sieht es denn aus, wenn du ein "ANSI-C-Hello-World" erstellst.. so ganz ohne Qt? Klappt das dann auch mit dem Linker? Wie sieht es aus, wenn du den Qt-Linkeraufruf mal von Hand ohne diese ganzen nicht-ARM-Pfade machst?
astrunck
Beiträge: 6
Registriert: 13. April 2011 16:50

Beitrag von astrunck »

Hi,

soweit ich das verstanden habe, willst du auf deinem x86 System für den Arm Cortex a8 kompilieren.

Wo liegt denn die Toolchain "arm-cortexa8-linux-gnueabi-g++"?

Innerhalb der qmake.conf hast du ja keinen direkten Pfad angeben. Daher gehe ich mal davon aus, dass der Pfad zu deiner Toolchain in der Systemvariablen PATH gesetzt ist. Richtig? Oder liege ich total falsch?

Jedenfalls siehe ich das ähnlich mit solarix, innerhalb deiner qmake.conf sehen die Variablen,
QMAKE_LFLAGS
QMAKE_INCDIR
QMAKE_LIBDIR
sehr eigenartig aus. Sie müssen auf die Header/libs von der Toolchain verweisen.

Wie lautet denn dein Pfad zur Toolchain?
Antworten