链接问题,因为我正在使用OpenSSL + SWIG创建python模块

时间:2011-04-14 21:53:44

标签: python linker openssl swig

我有一个C文件dtls_udp_echo.c,其中我使用SSL函数。我正在尝试使用SWIG为此文件创建一个Python包装器。我已经完成了以下步骤:

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 :(得分:0)

找不到OpenSSL库。将其添加到您的ld搜索路径;有关详细信息,请参阅ldconfig(8)手册页。