Boost 1.47 Unlösbarer Linker Fehler?
-
Hallo zusammen,
ich versuche seit geraumer Zeit Boost unter einer Linux Umgebung in Betrieb zunehmen dabei habe ich allerdings festgestellt das etwas im argen liegt.
libboost_chrono.a libboost_program_options.a libboost_chrono.so libboost_program_options.so libboost_chrono.so.1.47.0 libboost_program_options.so.1.47.0 libboost_date_time.a libboost_python.a libboost_date_time.so libboost_python.so libboost_date_time.so.1.47.0 libboost_python.so.1.47.0 libboost_exception.a libboost_random.a libboost_filesystem.a libboost_random.so libboost_filesystem.so libboost_random.so.1.47.0 libboost_filesystem.so.1.47.0 libboost_regex.a libboost_graph.a libboost_regex.so libboost_graph.so libboost_regex.so.1.47.0 libboost_graph.so.1.47.0 libboost_serialization.a libboost_math_c99.a libboost_serialization.so libboost_math_c99f.a libboost_serialization.so.1.47.0 libboost_math_c99f.so libboost_signals.a libboost_math_c99f.so.1.47.0 libboost_signals.so libboost_math_c99l.a libboost_signals.so.1.47.0 libboost_math_c99l.so libboost_system.a libboost_math_c99l.so.1.47.0 libboost_system.so libboost_math_c99.so libboost_system.so.1.47.0 libboost_math_c99.so.1.47.0 libboost_test_exec_monitor.a libboost_math_tr1.a libboost_thread.a libboost_math_tr1f.a libboost_thread.so libboost_math_tr1f.so libboost_thread.so.1.47.0 libboost_math_tr1f.so.1.47.0 libboost_unit_test_framework.a libboost_math_tr1l.a libboost_unit_test_framework.so libboost_math_tr1l.so libboost_unit_test_framework.so.1.47.0 libboost_math_tr1l.so.1.47.0 libboost_wave.a libboost_math_tr1.so libboost_wave.so libboost_math_tr1.so.1.47.0 libboost_wave.so.1.47.0 libboost_prg_exec_monitor.a libboost_wserialization.a libboost_prg_exec_monitor.so libboost_wserialization.so libboost_prg_exec_monitor.so.1.47.0 libboost_wserialization.so.1.47.0
make clean mips rm -rf .mips .linux mkdir .mips mips-linux-uclibc-g++ -Wall -Wno-unused-result -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -static -g -I../lib/boost_1_47_0 -I../lib/cgicc-mips-inst alled/include/ -I. -c main.cpp -o .mips/main.o mips-linux-uclibc-g++ -o .mips/sphinx.exe .mips/main.o -L../lib/cgicc-mips-insta lled/lib -lcgicc -nodefaultlibs -lstdc++ -lc -gcc -L../lib/boost_1_47_0/stage/li b/ -lboost_system /home/freetz/freetz-trunk/toolchain/build/mips_gcc-4.5.3_uClibc-0.9.31.1/mips-li nux-uclibc/bin/../lib/gcc/mips-linux-uclibc/4.5.3/../../../../mips-linux-uclibc/ bin/ld: skipping incompatible ../lib/boost_1_47_0/stage/lib//libboost_system.so when searching for -lboost_system /home/freetz/freetz-trunk/toolchain/build/mips_gcc-4.5.3_uClibc-0.9.31.1/mips-li nux-uclibc/bin/../lib/gcc/mips-linux-uclibc/4.5.3/../../../../mips-linux-uclibc/ bin/ld: skipping incompatible ../lib/boost_1_47_0/stage/lib//libboost_system.a w hen searching for -lboost_system /home/freetz/freetz-trunk/toolchain/build/mips_gcc-4.5.3_uClibc-0.9.31.1/mips-li nux-uclibc/bin/../lib/gcc/mips-linux-uclibc/4.5.3/../../../../mips-linux-uclibc/ bin/ld: cannot find -lboost_system collect2: ld returned 1 exit status make: *** [.mips/sphinx.exe] Fehler 1
Hab einen Fehler in meinem Makefile entdeckt jetzt habe ich einen Anhaltspunkt:
bin/ld: skipping incompatible ../lib/boost_1_47_0/stage/lib//libboost_system.soAber wieso also ich möchte gerne für die Fritzbox das ganze baubar machen daher habe ich folgende Flags für die Bibliothek verwendet:
./bjam toolset=gcc architecture=mips32 stage
Meine Flags fürs Programmchen sind:
EXTRA_LIBS = -nodefaultlibs -lstdc++ -lc -gcc -L$(BOOST-SYSTEM) -lboost_system CCOPTIONS = -Wall -Wno-unused-result -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -static
Hmm wieso passt das nicht zusammen?
-
"skipping incompatible XXX" heißt normalerweise, dass XXX für eine andere Architektur ist. Vermutlich ist es eine 64-Bit Bibliothek.
-
SeppJ schrieb:
"skipping incompatible XXX" heißt normalerweise, dass XXX für eine andere Architektur ist. Vermutlich ist es eine 64-Bit Bibliothek.
Es liegt vermutlich am Deployment von Boost, da sich das Programm ohne Boost ausführen lässt.
In der Doku finde ich aber keine Auffschluss darüber?
Ich versuche jetzt mal ein --toolset=gcc --build-type=minimal --layout=system was ich in einem Repository für eine ältere Version gefunden habe aber vermutlich wird das auch nichts helfen.
Weißt du vielleicht wie ich erzwingen könnte das der Crosscompiler mips-linux-uclibc zum Bauen von Boost verwendet wird?
-
Bevor du dir einen Ast suchst, mach doch mal ein
file
auf die fragliche Bibliothek.
-
SeppJ schrieb:
Bevor du dir einen Ast suchst, mach doch mal ein
file
auf die fragliche Bibliothek.Stimmt gute Idee, aber war eigentlich klar das hier was schief läuft
Programm:
ELF 32-bit MSB relocatable, MIPS, MIPS32 version 1 (SYSV), with unknown capability 0x41000000 = 0xf676e75, with unknown capability 0x10000 = 0x70403, not strippedCGICC:
ELF 32-bit MSB shared object, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, with unknown capability 0x41000000 = 0xf676e75, with unknown capability 0x10000 = 0x70403, not strippedBOOST:
ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, strippedDoch wie sage ich sage bjam mach mir mips32. Alles was ich versucht ist dieses Compilat.
Er sollte am besten gleich mips-linux-uclibc verwenden...
./bjam toolset=gcc architecture=mips32 stage nimmt er wohl einfach nur kommentarlos hin
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.