URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6586
[ Назад ]

Исходное сообщение
"Kdevelop + OpenSSL хедеры"

Отправлено geragray , 06-Июл-07 13:42 
Установил Kdevelop и все необходимые компоненты к нему а также послуднюю версию OpenSSL (по дефолту устанавливается в /usr/local/ssl/include/openssl). Создал с проэкс с темплейтом для хелло ворд - все компилируется. Заменяю исходный код кодом dtls клиента взятого из http://freshmeat.net/projects/dtls_example/ в котором прописаны инклюды на опен ссл библиотеку вот так

#include <stdio.h>

#include <openssl/ssl.h>
#include <openssl/bio.h>
#include <openssl/err.h>

Пример не компилируется и выдает множество ошибок типа
/home/sergey/Ktest/src/ktest.c:182: undefined reference to `SSL_library_init'

Изменил пути на абсолютные
#include </usr/local/ssl/include/openssl/ssl.h>
все равно приложение хедеры не видит.

Вопрос - что я делаю не правильно? Есть специфика указания заголовочных файлов под линукс ? Заранее спасибо.


Содержание

Сообщения в этом обсуждении
"Kdevelop + OpenSSL хедеры"
Отправлено NuINu , 06-Июл-07 13:58 
>Установил Kdevelop и все необходимые компоненты к нему а также послуднюю версию
>OpenSSL (по дефолту устанавливается в /usr/local/ssl/include/openssl). Создал с проэкс с темплейтом
>для хелло ворд - все компилируется. Заменяю исходный код кодом dtls
>клиента взятого из http://freshmeat.net/projects/dtls_example/ в котором прописаны инклюды на опен ссл
>библиотеку вот так
>
>#include <stdio.h>
>
>#include <openssl/ssl.h>
>#include <openssl/bio.h>
>#include <openssl/err.h>
>
>Пример не компилируется и выдает множество ошибок типа
>/home/sergey/Ktest/src/ktest.c:182: undefined reference to `SSL_library_init'
>
>Изменил пути на абсолютные
>#include </usr>
>все равно приложение хедеры не видит.
>
ну если хочешь так ;)попробуй заменить угловые скобки на кавычки.

а вообще тебе надо изменить/добавить переменную для компилятора -I
в конфигурации проекта для qt это переменная INCLUDE в файле проекта.

а в Кдевелоп, есть меню: проект-параметры проекта, там ищи параметры конфигуре,
ну и там думаю надо в едите CPPFLAGS и поставить заветную строку -I/usr/local/ssl/include/openssl/
и в сишнике
#include <ssl.h>
или
-I/usr/local/ssl/include/
и в сишнике
#include <openssl/ssl.h>

>Вопрос - что я делаю не правильно? Есть специфика указания заголовочных файлов
>под линукс ? Заранее спасибо.



"Kdevelop + OpenSSL хедеры"
Отправлено vic , 06-Июл-07 14:05 
>Установил Kdevelop и все необходимые компоненты к нему а также послуднюю версию
>OpenSSL (по дефолту устанавливается в /usr/local/ssl/include/openssl). Создал с проэкс с темплейтом
>для хелло ворд - все компилируется. Заменяю исходный код кодом dtls
>клиента взятого из http://freshmeat.net/projects/dtls_example/ в котором прописаны инклюды на опен ссл
>библиотеку вот так
>
>#include <stdio.h>
>
>#include <openssl/ssl.h>
>#include <openssl/bio.h>
>#include <openssl/err.h>
>
>Пример не компилируется и выдает множество ошибок типа
>/home/sergey/Ktest/src/ktest.c:182: undefined reference to `SSL_library_init'
это не компилятор, это уже линкер, нуна подключать саму библу, не наю как и где в kdevelop это прописывается, а для make используются результаты детекта утилиты pkg-config:

флаги компиляции
$ pkg-config --cflags openssl  
опции компановки
$ pkg-config --libs openssl


>Изменил пути на абсолютные
>#include </usr/local/ssl/include/openssl/ssl.h>
>все равно приложение хедеры не видит.
если бы не видело хедеров писало бы 'не найден файл ssl.h'
не надо менять так пути, после правильного (см. выше) подключения openssl в проект усе заработает.

>Вопрос - что я делаю не правильно? Есть специфика указания заголовочных файлов
>под линукс ? Заранее спасибо.
Все как обычно, по стандартам. Разделяйте понятие компиляция, линковка(компоновка), т.к. за это отвечают разные программы.

Удачи.


"Kdevelop + OpenSSL хедеры"
Отправлено NuINu , 06-Июл-07 14:20 

>>все равно приложение хедеры не видит.
>если бы не видело хедеров писало бы 'не найден файл ssl.h'

если компилятор видит хеадер, а путь к ним не стандартный, значит он видит, какой нибудь старый хеадер! находящийся по стандартному пути. Проверь к примеру путь /use/include
и наверняка найдешь там директорию openssl


"Kdevelop + OpenSSL хедеры"
Отправлено vic , 06-Июл-07 14:40 
>
>>>все равно приложение хедеры не видит.
>>если бы не видело хедеров писало бы 'не найден файл ssl.h'
>
>если компилятор видит хеадер, а путь к ним не стандартный, значит он
>видит, какой нибудь старый хеадер! находящийся по стандартному пути. Проверь к
>примеру путь /use/include
>и наверняка найдешь там директорию openssl

Хорошая мысль, хотя я вот у себя не нашел.
Но так тоже бывает - конфликт хедеров, поэтому и следует использовать pkg-config для получения правильных путей и опций. И ставить их в правильном порядке при сборке проекта.


"Kdevelop + OpenSSL хедеры"
Отправлено geragray , 06-Июл-07 17:38 
Ура, все заработало. Итак все предположения оказались верными, действительно в прожект опшенс/конфигур нужно добавить две строчки для препроцессора -I/usr/local/ssl/include и для линковшика -lssl -lcrypto. Все спасибо за советы.

> Проверь к примеру путь /use/include и наверняка найдешь там директорию openssl
У меня там тоже было пусто