Общая библиотека не найдена - PullRequest
2 голосов
/ 07 мая 2011

Я использую Ubuntu 10.10 и программу на C, которая использует общую библиотеку libcrypto.so. При компиляции, хотя у меня есть Makefile с опцией -lcrypto, я получаю следующее сообщение:

/usr/bin/ld: skipping incompatible ./libcrypto.so when searching for -lcrypto
/usr/bin/ld: cannot find -lcrypto

Ранее я экспортировал текущий каталог, выполнив:

export LD_LIBRARY_PATH=D_LIBRARY_PATH:.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

Так что не так с моей библиотекой и что я могу сделать?

Ответы [ 2 ]

2 голосов
/ 08 мая 2011

Первое сообщение об ошибке, вероятно, указывает на то, что у вас есть 64-битная библиотека, но вы выполняете 32-битную компиляцию или 32-битную библиотеку, но выполняете 64-битную компиляцию.

Выполните file libcrypto.so чтобы увидеть, какой это тип, затем настройте свою сборку (перезапустите - удалите все объектные файлы) с помощью опции '-m32' или '-m64', чтобы получить режим записи при сборке.Если вы не можете решить, как еще получить это в makefile, используйте:

make CC="gcc -m32" CXX="g++ -m32"

(или 64-битную версию, если вы хотите).

2 голосов
/ 07 мая 2011

Не могли бы вы опубликовать вывод этого:

$ file ./libcrypto.so

И убедитесь, что это верная версия для вашей машины?(Т.е. 32 против 64 бит и т. Д.?)

...