Связывание с общей библиотекой x86 в Linux x64 - PullRequest
5 голосов
/ 07 июля 2011

Я пытаюсь установить связь с общей библиотекой x86 в x64 Ubuntu 11.04 Natty Narwhal, но получаю следующее сообщение:

/usr/bin/ld: skipping incompatible ./bin/libshared.so when searching for -lshared
/usr/bin/ld: cannot find -lshared

Некоторые сведения:
Имя общей библиотеки libshared.so
Общая библиотека создана на ОС x86.
Я установил lib32stdc ++ 6.
Makefile выглядит так:

test: main.o
    g++ -mi386linux -L./bin -lshared main.o -o test

main.o: main.cpp
    g++ -m32 -c main.cpp -o main.o

Есть идеи?

Редактировать: После изменения флага -mi386linux на -m32 я получил эту ошибку:

/usr/bin/ld: cannot find -lshared  
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status

при запуске locate я обнаружил libstdc ++., Поэтому в следующих местах:

/usr/lib/x86_64-linux-gnu/libstdc++.so.6  
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.14  
/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5/libstdc++.so  
/usr/lib32/libstdc++.so.6  
/usr/lib32/libstdc++.so.6.0.14

Ответы [ 2 ]

3 голосов
/ 07 июля 2011

Я не уверен, о чем должен быть -mi386linux, но если вы замените его на -m32 в строке ссылки, то я подозреваю, что это сработает.

0 голосов
/ 08 июля 2011

Определенно используйте «-m32» и обязательно укажите «-L / usr / lib32» как можно раньше в вашей команде сборки.

...