Подтвердить что ты не робот

С++: компоновщик не может найти -lcrypto, но библиотека находится на пути

Я компилирую приложение С++ с помощью GNU g++. В проекте используются библиотеки OpenSSL.

Фон

На моей машине (64-битное центральное ядро ​​CentOS) я компилирую и связываю свои файлы.

g++ -g -c -L/usr/local/lib/ -L/usr/lib64/ 
    -I/usr/local/include/ -I/usr/local/ssl/include/ 
    -lcrypto mysrc1.cpp mysrc2.cpp mysrc3.cpp

g++ -L/usr/local/lib/ -L/usr/lib64/ -lcrypto 
    *.o -o ./myapp.out

В моем приложении используется функция MD5, которая содержится в libcrypto.so. Как вы можете видеть, я указываю g++ dirs, где искать с помощью опций -L, -I и какие библиотеки искать с помощью параметра -l<lib-name>. Есть некоторые тривиальные пути, такие как /usr/local/lib, которые можно опустить, конечно, но я указал их, потому что makefile является параметрическим.

Проблема

Моя проблема в том, что я могу успешно скомпилировать свой материал (первая команда), , но ссылка не работает (вторая команда):

/usr/bin/ld: не удается найти -lcrypto

collect2: ld возвращен 1 статус выхода

make: * [cppsims_par] Ошибка 1

Но я проверял папки и все... libcrypto.so находится внутри /usr/lib64/. Что происходит?

4b9b3361

Ответ 1

Это может помочь, если вы попытаетесь найти strace, чтобы узнать, почему это не удалось найти файл

strace -f -e trace=file g++ -L/usr/local/lib/ -L/usr/lib64/ -lcrypto 
    *.o -o ./myapp.out