LINUX.ORG.RU

Простой ssl-клиент


0

0

Кто-нибудь сталкивался с ssl-клиентами-серверами? При компиляции программы c функциями openssl получаю "undefined reference" на следующие, по меньшей мере: OpenSSL_add_all_algorithms (); OpenSSL_add_all_ciphers (); OpenSSL_add_all_digests (); Они все используют библиотеку libcrypto, которая у меня лежит в /lib Пакет openssl.0.9.7a, под RH9. На RH7.3 та же ерунда. Может быть, вы сталкивались с этим. Помогите.


Ответ на: комментарий от loki

Тобишь в ответ на ldd `which openssl`
у меня, например, выдаёт
/usr/bin/openssl:
libssl.so.3 => /usr/lib/libssl.so.3 (0x480b8000)
libcrypto.so.3 => /usr/lib/libcrypto.so.3 (0x480e9000)
libc.so.5 => /usr/lib/libc.so.5 (0x481f4000)

Т.е. в Makefile своего бинаря надо добавить
LFLAGS += -lssl -lcrypto

loki
()
Ответ на: комментарий от loki

У меня ldd openssl выводит следующее:

libssl.so.4 => lib/libssl.so.4

libresolv.so.2 => lib/libresolv.so.2

libcrypto.so.4 => lib/libcrypto.so.4

libgssapi_krb5.so.2 => /usr/kerberos/lib/libgssapi_krb5.so.2

libkrb5.so.3 => /usr/kerberos/lib/libkrb5.so.3

libcrypto.so.3 => /usr/kerberos/lib/libcrypto.so.3

libcom_err.so.3 => /usr/kerberos/lib/libcom_err.so.3

libdl.so.2 => /lib/libdl.so.2

libz.so.1 => /lib/libz.so.1

libc.so.6 => /lib/tls/libc.so.6

/lib/ld-linux.so.2 => /lib/ld-linux.so.2

Комgилирую опять:

gcc -L/lib -lssl -lresolv -lcrypto -ldl -lz -L/usr/kerberos/lib -lgssapi_krb5 -lkrb5 -lcrypto -lcom_err -L/lib/tls -lc myssl.cpp

И опять "undefined reference". Должно было получиться?

Tsahes
() автор топика
Ответ на: комментарий от Tsahes

в который раз повторяю, порядок перечисления либ/объектников ВАЖЕН.

поставь свой плюсовник перед либами. в общем вначале что-то, а потом то, что ему надо.

anonymous
()

Надо компилить с опцией -lssl

OxiD ★★★★
()
Ответ на: комментарий от anonymous

gcc ... ssl.cpp

Я компилировал .cpp с опциями -L и -l с указанием путей к библиотекам и самими библиотеками в ПОРЯДКЕ, в котором их отображает ldd. Это то, что имелось в виду? Безрезультатно.

Tsahes
() автор топика
Ответ на: комментарий от anonymous

>g++ -lssl ssl.cpp

Спасибо, с g++ скомпилировалось! Опыта по пользованию GCC у меня мало. Почему g++ успешно скомпилировал, а gcc по-прежнему не хочет?

Tsahes
() автор топика
Ответ на: комментарий от Tsahes

> Почему g++ успешно скомпилировал, а gcc по-прежнему не хочет?

Ответ кроется в man g++ :

The C and C++ compilers are integrated. Both process input files through one or more of four stages: preprocessing, compilation, assem- bly, and linking. Source filename suffixes identify the source lan- guage, but which name you use for the compiler governs default assump- tions:

gcc assumes preprocessed (.i) files are C and assumes C style link- ing.

g++ assumes preprocessed (.i) files are C++ and assumes C++ style linking.

loki
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.