2012-01-20 5 views
3

У меня возникла серьезная проблема с компиляцией моего проекта C++ и OpenSSL на моем Ubuntu 11.10. Команда компиляции является:Компилировать 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 и те же источники). Пожалуйста, помогите мне!

+0

Возможный дубликат [Ссылка на OpenSSL] (http://stackoverflow.com/questions/4352573/linking-openssl) – Flexo

ответ

8

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

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

Работает. Так просто :) Спасибо! – neoben

+0

Будучи новым пользователем, имейте в виду, что в дополнение к (или даже вместо) спасибо, лучший ответ - поддержать и/или принять лучший ответ. Не нужно быть моим. – smparkes

2

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

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

0

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

Смежные вопросы