Seite 1 von 2
qt-embedded cross-compile
Verfasst: 18. April 2006 17:22
von anno
Hallo,
ich möchte ein programm cross-compilen bei dem kein configure dabei ist sondern nur ein makefile.
-Ich nutze Fedora 5
-Zieltarget ist mips
-ich habe ein toolchain für mips
(mit dem ich normale programme für mips compilieren kann)
-ich habe qt-embedded 3.3.6 mit den parametern
-embedded mips -xplatform qws/linux-mips-g++ bereits erfolgreich kompiliert.
gibt es da ein paar howtos wie soetwas funktionier???
Verfasst: 18. April 2006 17:31
von BartSimpson
du must nur die variables für CC bzw CCX ändertn im Makefile
wobei CC und CCX auf den crosscompiler zeigen sollten. Dann sollte compelieren gehen. Eventuell must du noch Variabeln für den Linker anpassen. Nur ob denn ein brauchbares Programm rauskommt ist fraglich.
Verfasst: 18. April 2006 23:25
von anno
warum?
Verfasst: 19. April 2006 09:58
von BartSimpson
Damit der Crosscompiler und nicht der Systemcompiler benutzt wird.
Verfasst: 19. April 2006 12:35
von anno
das warum bezog sich auf
BartSimpson hat geschrieben:Nur ob denn ein brauchbares Programm rauskommt ist fraglich.
Verfasst: 19. April 2006 12:55
von BartSimpson
Weil es sein kann, das z.b Assembler Code mit eingebaut wird. Oder die Datentypen sind denn für das Zielsystem uU zu klein.
kompilieren von Qt
Verfasst: 24. April 2006 11:28
von kuberka
Hi,
habe mein Qtopia mit der nachfolgenden Einstellung konfiguriert.
-prefix /usr/local/Trolltech/Qt-4.1.0-mips -xplatform qws/linux-mips-g++ -embedded mips
-I/opt/emlix/netdcu6/include -L/opt/emlix/netdcu6/lib -D_MIPS_SZPTR=32
Während dem kompilieren mit gmake trat folgender fehler auf.
/usr/lib/gcc/i586-suse-linux/4.0.2/../../../../i586-suse-linux/bin/ld:
skipping incompatible /opt/emlix/netdcu6/lib/libdl.so when searching for
-ldl
/usr/lib/gcc/i586-suse-linux/4.0.2/../../../../i586-suse-linux/bin/ld:
skipping incompatible /opt/emlix/netdcu6/lib/libdl.a when searching for
-ldl
/usr/lib/gcc/i586-suse-linux/4.0.2/../../../../i586-suse-linux/bin/ld:
skipping incompatible /opt/emlix/netdcu6/lib/libstdc++.so when searching
for -lstdc++
/usr/lib/gcc/i586-suse-linux/4.0.2/../../../../i586-suse-linux/bin/ld:
skipping incompatible /opt/emlix/netdcu6/lib/libstdc++.a when searching
for -lstdc++
/usr/lib/gcc/i586-suse-linux/4.0.2/../../../../i586-suse-linux/bin/ld:
skipping incompatible /opt/emlix/netdcu6/lib/libm.so when searching for
-lm
/usr/lib/gcc/i586-suse-linux/4.0.2/../../../../i586-suse-linux/bin/ld:
skipping incompatible /opt/emlix/netdcu6/lib/libm.a when searching for -lm
/usr/lib/gcc/i586-suse-linux/4.0.2/../../../../i586-suse-linux/bin/ld:
skipping incompatible /opt/emlix/netdcu6/lib/libgcc_s.so when searching
for -lgcc_s
/usr/lib/gcc/i586-suse-linux/4.0.2/../../../../i586-suse-linux/bin/ld:
skipping incompatible /opt/emlix/netdcu6/lib/libc.so.6 when searching for
/opt/emlix/netdcu6/lib/libc.so.6
/usr/lib/gcc/i586-suse-linux/4.0.2/../../../../i586-suse-linux/bin/ld:
cannot find /opt/emlix/netdcu6/lib/libc.so.6
collect2: ld returned 1 exit status
make[2]: *** [../../../bin/moc] Fehler 1
make[2]: Leaving directory
`/home/sumpi/Software/qtopia-core-opensource-src-4.1.0/src/tools/moc'
make[1]: *** [sub-tools-moc-make_default-ordered] Fehler 2
make[1]: Leaving directory
`/home/sumpi/Software/qtopia-core-opensource-src-4.1.0/src'
make: *** [sub-src-make_default-ordered] Fehler 2
Hat dazu jemand eine Idee oder noch besser Lösung?
Vielen dank schon mal.
Grüsse
Torsten
kompilieren von Qt
Verfasst: 24. April 2006 11:28
von kuberka
Bin ins falsch Thema gerutscht,
aber vieleicht fällt euch auch was dazu ein.
Grüsse
Torsten
Verfasst: 24. April 2006 11:40
von BartSimpson
Das liegt daran, das der x86 linker und nicht der Linker aus deiner tool Chain benutzt wird.
Verfasst: 24. April 2006 11:42
von kuberka
wie kann ich den linker dann ändern?
Verfasst: 24. April 2006 11:47
von BartSimpson
Haste du bei dem Überstzen auch den richiten Compiler gewählt?
schau mal im Makefile nach. Dort steht welcher Linker und Compiler benutzt werden soll.
Verfasst: 24. April 2006 11:57
von kuberka
Hi,
habe im qmake.conf die richtigen Complier eingegen und denke auch den Richtigen Linker.
Hmmm was könnte es noch sein?
Verfasst: 24. April 2006 12:00
von kuberka
Hier mal das qmake.conf file
#
# qmake configuration for linux-g++ using the mipsel-linux-g++ crosscompiler
#
MAKEFILE_GENERATOR = UNIX
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui network
QMAKE_INCREMENTAL_STYLE = sublib
QMAKE_CC =/opt/emlix/netdcu6/bin/mipsel-linux-gcc
QMAKE_LEX = flex
QMAKE_LEXFLAGS =
QMAKE_YACC = yacc
QMAKE_YACCFLAGS = -d
QMAKE_CFLAGS = -pipe
QMAKE_CFLAGS_WARN_ON = -Wall -W
QMAKE_CFLAGS_WARN_OFF =
QMAKE_CFLAGS_RELEASE = -O2
QMAKE_CFLAGS_DEBUG = -g
QMAKE_CFLAGS_SHLIB = -fPIC
QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
QMAKE_CFLAGS_THREAD = -D_REENTRANT
QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden
QMAKE_CXX = /opt/emlix/netdcu6/bin/mipsel-linux-g++
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -fno-exceptions
QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
QMAKE_INCDIR =
QMAKE_LIBDIR =
QMAKE_INCDIR_X11 =
QMAKE_LIBDIR_X11 =
QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
QMAKE_INCDIR_OPENGL = /usr/X11R6/include
QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
QMAKE_INCDIR_QTOPIA = $(QPEDIR)/include
QMAKE_LIBDIR_QTOPIA = $(QPEDIR)/lib
QMAKE_LINK = /opt/emlix/netdcu6/bin/mipsel-linux-g++
QMAKE_LINK_SHLIB = /opt/emlix/netdcu6/bin/mipsel-linux-g++
QMAKE_LFLAGS =
QMAKE_LFLAGS_RELEASE =
QMAKE_LFLAGS_DEBUG =
QMAKE_LFLAGS_SHLIB = -shared
QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
QMAKE_LFLAGS_SONAME = -Wl,-soname,
QMAKE_LFLAGS_THREAD =
QMAKE_RPATH = -Wl,-rpath,
QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 =
QMAKE_LIBS_X11SM =
QMAKE_LIBS_QT = -lqte
QMAKE_LIBS_QT_THREAD = -lqte-mt
QMAKE_LIBS_QT_OPENGL = -lqgl
QMAKE_LIBS_QTOPIA = -lqpe -lqtopia
QMAKE_LIBS_THREAD = -lpthread
QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
QMAKE_AR = ar cqs
QMAKE_RANLIB =
QMAKE_TAR = tar -cf
QMAKE_GZIP = gzip -9f
QMAKE_COPY = cp -f
QMAKE_MOVE = mv -f
QMAKE_DEL_FILE = rm -f
QMAKE_DEL_DIR = rmdir
QMAKE_CHK_DIR_EXISTS = test -d
QMAKE_MKDIR = mkdir -p
load(qt_config)
Verfasst: 24. April 2006 12:06
von BartSimpson
Bis auf die OpenGL Einträge sieht das alles richtig aus.
Wird beim überetzen auch der Richtige Compile benutzte?
Das kannste mit file /XXXX prüfen
XXX ist eine Opjektdatei erzeigt wurden.
Verfasst: 24. April 2006 12:12
von kuberka
Glaube den Fehler gefunden zu haben.
Man muss noch die Makefiles für den moc und rcc usw an passsen.
steht auch im Header der Files.
Ich probiers mal und melde wenn es geklappt hat.
Grüsse
Torsten