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.so

    Aber 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?


  • Mod

    "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?


  • Mod

    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 stripped

    CGICC:
    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 stripped

    BOOST:
    ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped

    Doch 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.


Anmelden zum Antworten