Проблема с линковкой, так как я делаю модуль Python с использованием OpenSSL + SWIG - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть файл C dtls_udp_echo.c, в котором я использую функции SSL.Я пытаюсь создать оболочку Python для этого файла с помощью SWIG.Я сделал следующие шаги:

1) Создан файл интерфейса udp.i:

%module udp

%{
 /* Put header files here or function declarations like below */

 #define SWIG_FILE_WITH_INIT
 #include "dtls_udp_echo.h"

%}

int THREAD_setup();

int THREAD_cleanup();

int handle_socket_error();

int generate_cookie(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len);

int verify_cookie(SSL *ssl, unsigned char *cookie, unsigned int cookie_len);

int dtls_verify_callback (int ok, X509_STORE_CTX *ctx) ;

void* connection_handle(void *info);

void start_server(int port, char *local_address);

void start_client(char *remote_address, char *local_address, int port, int length, int messagenumber);

2) Запустите команду swig -python udp.i.

3)Запустите команду gcc -O2 -fPIC -c dtls_udp_echo.c -I/usr/local/ssl/include -L/usr/local/ssl/lib -lcrypto -lssl.Путь к включению и библиотеке правильный, я проверил!

4) Запустите команду gcc -O2 -fPIC -c udp_wrap.c -I/usr/include/python2.5 -I/usr/local/ssl/include -L/usr/local/ssl/lib -lcrypto -lssl.

5) Запустите команду gcc -shared dtls_udp_echo.o udp_wrap.o -o _udp.so.

Кажется, что все в порядке, так как об ошибках не сообщается.Но когда я пытаюсь импортировать модуль, я получаю следующую трассировку:

>>> import udp
> Traceback (most recent call last):  
> File "<stdin>", line 1, in <module>  
> File "udp.py", line 28, in <module>
>     import _udp ImportError: ./_udp.so: undefined symbol:
> SSL_get_rbio

Кто-нибудь может мне помочь решить эту проблему?

1 Ответ

0 голосов
/ 15 апреля 2011

Не удается найти библиотеку OpenSSL.Добавьте его в свой путь поиска ld;см. справочную страницу ldconfig(8).

...