Соединение использующий g ++ сбои, ищущие-lstdc ++

Я пытаюсь использовать чужой Make-файл для complile очень простая библиотека C++. Make-файл следующие:

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

Это компилирует прекрасный, но компоновщик жалуется:

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

К вашему сведению я нахожусь на Ubuntu 9.10 64 бита.

24
задан jwoolard 18 January 2010 в 12:49
поделиться

2 ответа

Отвечая на мой вопрос:

Ship Conline, кажется, немного взлома, вам необходимо создать симлитуру для 32-битной версии библиотеки (после установки упаковочных устройств @ Ответ Nos):

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

Как только вы сделали это, линкер будет автоматически находить правильную библиотеку для использования.

18
ответ дан 28 November 2019 в 22:10
поделиться

Кажется, вы составляете 32-битную библиотеку на 64-битной машине, однако 32-битная версия libstdc ++ нет.

Попробуйте APT-Get Установить IA32-Libs libc6-i386 libc6-dev-i386 lib32gcc1 lib32Stdc ++ 6

(кстати. Вы производим .so, вы должны указать -FIC при составлении ваших файлов .cpp хорошо)

5
ответ дан 28 November 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: