Jetzt Rück mal etwas mehr Infos raus. Was hast du für ein System. Crosscompilest du? Welches Linux verwendest du ?
Jetzt Rück mal etwas mehr Infos raus. Was hast du für ein System. Crosscompilest du? Welches Linux verwendest du ?
Hi,
sorry.
Ja, ich mache Crosscompiling für einen BeagleBone Black Rev C (Elementary) mit einem Debian Derviat auf ARM.
Ich verwende kubuntu 14.04 (letzter Stand)uname -a
Linux pitbully 3.8.13-bone47 #1 SMP Fri Apr 11 01:36:09 UTC 2014 armv7l GNU/Linux
mit der Toolchainuname -a
Linux ritchie 3.13.0-36-generic #63-Ubuntu SMP Wed Sep 3 21:30:45 UTC 2014 i686 i686 i686 GNU/Linux
Hier die Make Datei des System:arm-linux-gnueabi-g++ -v
COLLECT_GCC=arm-linux-gnueabi-g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/lto-wrapper
Ziel: arm-linux-gnueabi
Konfiguriert mit: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.3-12ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/arm-linux-gnueabi/include/c++/4.7.3 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-gnu-unique-object --disable-libmudflap --disable-libitm --enable-plugin --with-system-zlib --enable-objc-gc --with-cloog --enable-cloog-backend=ppl --disable-cloog-version-check --disable-ppl-version-check --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv5t --with-float=soft --disable-werror --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=arm-linux-gnueabi --program-prefix=arm-linux-gnueabi- --includedir=/usr/arm-linux-gnueabi/include
Thread-Modell: posix
gcc-Version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1)
und bekomme zur Laufzeit des Programmes auf der Zielmaschine diese MeldungGCC_OPTIONS = -W -O03
COMPILER = arm-linux-gnueabi-g++
DEBUG_OPTIONS = -pedantic
#COMPILER = g++
#DEBUG_OPTIONS = -pedantic
#GCC_OPTIONS = -W -g
TARGETNAME = robytask
LINUX_INCLUDE =
LOCAL_INCLUDE = ./include/
LOCAL_OBJ = ./obj/
LOCAL_SRC = ./source/
OBJS = obj/motor.o obj/nav.o obj/path.o obj/coordinate.o \
obj/verhalte.o obj/robyvariable.o obj/robyvariablen.o obj/main.o obj/tcpservm.o \
obj/sensordata.o obj/utility.o obj/roboterpose.o obj/servo.o obj/Logging.o \
obj/i2cbustask.o
all: ${TARGETNAME}
${TARGETNAME}: $(OBJS)
$(COMPILER) -pthread $(GCC_OPTIONS) -L$(LOCAL_OBJ) $(OBJS) -o ${TARGETNAME}
arm-linux-gnueabi-strip ${TARGETNAME}
$(LOCAL_OBJ)robyvariable.o: $(LOCAL_SRC)robyvariable.cpp $(LOCAL_INCLUDE)robyvariable.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)robyvariable.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)robyvariable.cpp
$(LOCAL_OBJ)robyvariablen.o: $(LOCAL_SRC)robyvariablen.cpp $(LOCAL_INCLUDE)robyvariablen.h $(LOCAL_INCLUDE)robyvariable.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)robyvariablen.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)robyvariablen.cpp
$(LOCAL_OBJ)Logging.o: $(LOCAL_SRC)Logging.cpp $(LOCAL_INCLUDE)Logging.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)Logging.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)Logging.cpp
$(LOCAL_OBJ)i2cbustask.o: $(LOCAL_SRC)i2cbustask.cpp $(LOCAL_INCLUDE)i2cbustask.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)i2cbustask.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)i2cbustask.cpp
$(LOCAL_OBJ)motor.o: $(LOCAL_SRC)motor.cpp $(LOCAL_INCLUDE)motor.h $(LOCAL_INCLUDE)robyvariablen.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)motor.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)motor.cpp
$(LOCAL_OBJ)nav.o: $(LOCAL_SRC)nav.cpp $(LOCAL_INCLUDE)nav.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)nav.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)nav.cpp
$(LOCAL_OBJ)path.o: $(LOCAL_SRC)path.cpp $(LOCAL_INCLUDE)path.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)path.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)path.cpp
$(LOCAL_OBJ)roboterpose.o: $(LOCAL_SRC)roboterpose.cpp $(LOCAL_INCLUDE)roboterpose.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)roboterpose.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)roboterpose.cpp
$(LOCAL_OBJ)coordinate.o: $(LOCAL_SRC)coordinate.cpp $(LOCAL_INCLUDE)coordinate.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)coordinate.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)coordinate.cpp
$(LOCAL_OBJ)sensordata.o: $(LOCAL_SRC)sensordata.cpp $(LOCAL_INCLUDE)sensordata.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)sensordata.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)sensordata.cpp
$(LOCAL_OBJ)verhalte.o: $(LOCAL_SRC)verhalte.cpp $(LOCAL_INCLUDE)verhalte.h $(LOCAL_INCLUDE)picdefine.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)verhalte.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)verhalte.cpp
$(LOCAL_OBJ)utility.o: $(LOCAL_SRC)utility.cpp $(LOCAL_INCLUDE)utility.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)utility.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)utility.cpp
$(LOCAL_OBJ)servo.o: $(LOCAL_SRC)servo.cpp $(LOCAL_INCLUDE)servo.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)servo.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)servo.cpp
$(LOCAL_OBJ)main.o: $(LOCAL_SRC)main.cpp $(LOCAL_INCLUDE)main.h $(LOCAL_INCLUDE)robyvariablen.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)main.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)main.cpp
$(LOCAL_OBJ)tcpservm.o: $(LOCAL_SRC)tcpservm.cpp $(LOCAL_INCLUDE)tcpservm.h
$(COMPILER) $(GCC_OPTIONS) $(DEBUG_OPTIONS) -c -o $(LOCAL_OBJ)tcpservm.o -I$(LOCAL_INCLUDE) $(LOCAL_SRC)tcpservm.cpp
dummy:
# Project temp daten loeschen
clean:
rm -f ${LOCAL_OBJ}*.o *~ ${LOCAL_SRC}*~ $(LOCAL_INCLUDE)*~
rm -f ${TARGETNAME}
#/************************************************** *************************/
#/* End of file */
#/************************************************** *************************/
Ich verwendet kdevelop 4.6 für die Entwicklung und habe auch bereits die entsprechenden Include-Datei angelegt, damit ich die korrekten Lib's in der Entwicklung sehe.$ ./robytask: /lib/arm-linux-gnueabi/libc.so.6: version `GLIBC_2.15' not found (required by ./robytask)
Daher mein bestreben, die Programmteile, welche diese LIB verwenden, auf die neue LIB 2.4 zu schreiben. Andere C-Programme arbeiten auf dem System.
Viele Grüße
R.
Kaum macht man es richtig, schon funktioniert's ...
Sofern ich richtig Informiert bin wird die libc mit der toolchain ausgeliefert (Man kann diese natürlich auch manuell upgraden bzw. dem compiler sagen er soll eine andere Version nehmen) Das einfachste könnte jedoch sein ein upgrade der toolchain zu versuchen.
Hi,
das blöde ist ja, das ich beide verwende. GCLIBC 2.15 und 2.4.
Der Compiler ist meines Wissens laut ubunutu der letzte Stand.
Das Paket ist jedenfalls aktuell.
Nur wenn ich wüsste, welcher Programmteil, welche Funktion noch die alte LIB verwendet, könnte ich das ändern.
Gruss R.
Kaum macht man es richtig, schon funktioniert's ...
Crosscompile ist schon möglich... Es ist nicht ganz einfach ... vor allem wenn einem Wissen fehlt wie man Linking Fehler auf dem Target debuggt
Wenn das nur ein robytask ist, gibt es eigentlich keinen Grund das nicht auf dem BBB direkt zu kompilieren. Das ist zumindest meine Empfehlung für dich. Hier speziell.
Zum Crosscompile im allgemeinen braucht man Geduld um die Toolchain aufzusetzen. Man muss _wirklich_ wissen was auf dem Ziel läuft und _wiklich_ wissen was die Toolchain ausspuckt. Es sollte für dich dann auch kein Problem sein, eine eigene Toolchain zu bauen.Das ist meiner Meinung dein Hauptproblem. Deshalb, compiliere lieber auf dem Target selbst...
Wie macht man eine Cross-Toolchain?
http://elinux.org/ARMCompilers
http://www.lowlevel.eu/wiki/ARM_Cross-Compiler
Gruß
Georg
Hi,
danke für die links.
Hatte jedoch schon mehrfach tools für Raspberry PI, taskit Problemlos am rennen.
Ich installiere jetzt die Tools nochmals von neuem.
Normale C Programme arbeiten korrekt.
Habe es fast genauso gemacht. http://www.michaelhleonard.com/cross...glebone-black/
Gruss R.
Kaum macht man es richtig, schon funktioniert's ...
Was ist denn genau der Unterschied in deinem Programm im Vergleich zu anderen ?
Lesezeichen