Установил 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 (по дефолту устанавливается в /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 (по дефолту устанавливается в /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 в проект усе заработает.>Вопрос - что я делаю не правильно? Есть специфика указания заголовочных файлов
>под линукс ? Заранее спасибо.
Все как обычно, по стандартам. Разделяйте понятие компиляция, линковка(компоновка), т.к. за это отвечают разные программы.Удачи.
>>все равно приложение хедеры не видит.
>если бы не видело хедеров писало бы 'не найден файл ssl.h'если компилятор видит хеадер, а путь к ним не стандартный, значит он видит, какой нибудь старый хеадер! находящийся по стандартному пути. Проверь к примеру путь /use/include
и наверняка найдешь там директорию openssl
>
>>>все равно приложение хедеры не видит.
>>если бы не видело хедеров писало бы 'не найден файл ssl.h'
>
>если компилятор видит хеадер, а путь к ним не стандартный, значит он
>видит, какой нибудь старый хеадер! находящийся по стандартному пути. Проверь к
>примеру путь /use/include
>и наверняка найдешь там директорию opensslХорошая мысль, хотя я вот у себя не нашел.
Но так тоже бывает - конфликт хедеров, поэтому и следует использовать pkg-config для получения правильных путей и опций. И ставить их в правильном порядке при сборке проекта.
Ура, все заработало. Итак все предположения оказались верными, действительно в прожект опшенс/конфигур нужно добавить две строчки для препроцессора -I/usr/local/ssl/include и для линковшика -lssl -lcrypto. Все спасибо за советы.> Проверь к примеру путь /use/include и наверняка найдешь там директорию openssl
У меня там тоже было пусто