Скомпилируйте C ++ и OpenSSL в Ubuntu 11.10 - PullRequest
3 голосов
/ 20 января 2012

У меня возникла серьезная проблема при компиляции моего C ++ и OpenSSL проекта на моей Ubuntu 11.10.Команда компиляции:

g++ -Wall -lssl -lm -lcrypto -I ./src ./src/server.cpp -o ./bin/server

Я получаю эти ошибки:

server.cpp:(.text+0x8ff): undefined reference to `RSA_new'
server.cpp:(.text+0x92d): undefined reference to `PEM_read_RSAPrivateKey'
server.cpp:(.text+0xa85): undefined reference to `RSA_size'
server.cpp:(.text+0xaa1): undefined reference to `RSA_size'
server.cpp:(.text+0xae7): undefined reference to `RSA_private_decrypt'
server.cpp:(.text+0xd84): undefined reference to `BF_set_key'
server.cpp:(.text+0xf1d): undefined reference to `BF_ecb_encrypt'
server.cpp:(.text+0x13c6): undefined reference to `BF_ecb_encrypt'
collect2: ld returned 1 exit status
make: *** [server] Error 1

Я успешно установил openssl и libssl-dev нопроблема сохраняется.Я попытался скомпилировать проект на Linux Mint 12 с ядром 3.0, и у меня возникла та же проблема.На моей старой ОС Linux с ядром 2.6 проект компилировался и работал нормально (используя тот же Makefile и те же исходные коды).Пожалуйста, помогите мне!

Ответы [ 3 ]

8 голосов
/ 20 января 2012

Как правило, вам необходимо иметь флаги ссылки -l после кода, который их ссылается. Попробуйте

g++ -Wall  -I ./src ./src/server.cpp -o ./bin/server -lssl -lm -lcrypto
2 голосов
/ 20 января 2012

Как отмечается в комментарии к этого ответа , компоновщик ищет только неопределенные символы для включения в порядок, в котором перечислены параметры.

То есть, если ваш файл cpp использует библиотеки, библиотеки должны быть перечислены после файла cpp.

0 голосов
/ 07 июня 2013

Это ошибки из библиотеки crypto, проверьте, доступны ли библиотеки ssl и crypto в / usr / lib или где когда-либо устанавливались, если не устанавливаете их, и задали ли вы путь поиска библиотек для libssl и libcrypto в вашей команде компиляции?1001 *

...