Collegamento g++ non riesce la ricerca di -lstdc++

Sto cercando di usare qualcun altro Makefile per complilare una semplice libreria c++. Il makefile è come segue:

JNIFLAGS=-O2 -pthread -I/usr/lib/jvm/java-6-sun/include -I/usr/lib/jvm/java-6-sun/include/linux

all:
    rm -f ../dist/libUtils.so
    g++ $(JNIFLAGS) -c -m32 -o com_markets_utils_dates_NativeTime.o com_markets_utils_dates_NativeTime.cpp
    g++ $(JNIFLAGS) -c -m32 -o DateUtil.o DateUtil.cpp
    g++ -pthread -m32 -shared -fPIC -o ../dist/libUtils.so DateUtil.cpp
    g++ -pthread -m32 -shared -fPIC -o ../dist/libNativeTime.so DateUtil.o com_markets_utils_dates_NativeTime.o

Compila bene, ma il linker si lamenta:

...
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.1/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.1/libstdc++.a when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.1/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.1/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status
make: *** [all] Error 1

Cordiali saluti, io sono su Ubuntu 9.10 64bit.

  • Che versione di g++ stai usando – fare ‘g++ –versione per ottenere.
  • $ g++ –versione g++ (Ubuntu 4.4.1-4ubuntu8) 4.4.1
InformationsquelleAutor jwoolard | 2010-01-18



3 Replies
  1. 76

    Pubblicazione di riferimento per il futuro, una soluzione che ho trovato è stato quello di install g++-multilib. Ho avuto lo stesso incompatibili problema relativi a:- lstdc++ g++ versione 4.6.1

    Di un ulteriore di tastatura: g++-multilib è un pacchetto fittizio che ha installato g++4.6-multilib che a sua volta installata l’appropriato libstdc++.così sotto /usr/lib/gcc/x86_64-linux-gnu/4.6/32 cartella.

    • Onestamente! Questo merita più di un voto unico-up. Risolto il mio problema, di sicuro.
    • Questo approccio è consigliato anche da bugs.launchpad.net/ubuntu/+fonte/gcc-4.6/+bug/973240
    • Questo risolto il mio problema nella costruzione di una versione a 32bit di NodeJS su Ubuntu 12.04.1 LTS
    • Per gli utenti OpenSuse: sudo zypper install gcc-32bit g++-32bit
    • Grazie! Necessaria la compilazione Riak. Dopo ulteriori tentativi, vuoi dire che c’è una minore dipendenza da installare per risolvere il problema? Lamentele con questo, però, ha funzionato per me 🙂
    • c’è un lavoro di tutto senza usare “sudo”?

  2. 18

    Rispondere alla mia domanda:

    Ths soluzione sembra essere un po ‘ un hack, è necessario creare un link simbolico per la versione a 32 bit della biblioteca (dopo aver installato i pacchetti menzionati in @nos risposta):

    $ sudo ln -s /usr/lib32/libstdc++.so.6 /usr/lib32/libstdc++.so
    

    Una volta fatto questo, il linker automagicamente trovare la libreria corretta da utilizzare.

  3. 5

    Sembra di compilazione a 32 bit libreria su una macchina a 64 bit, tuttavia la versione a 32 bit di libstdc++ non è presente.

    Provare apt-get install ia32-libs libc6-i386 libc6-dev-i386 lib32gcc1 lib32stdc++6

    (btw. si sta producendo un .così , si dovrebbe specificare -fPIC durante la compilazione .cpp file)

    • Avevo pensato che, tuttavia, essi sono tutti installati – btw grazie per l’-fPIC promemoria, avrei preso quello…

Lascia un commento