[PyQt] [SIP]MD5 openssl

David Boddie david at boddie.org.uk
Fri Jul 1 18:57:51 BST 2011


On Wed Jun 29 10:38:07 BST 2011, Jarosław Białas wrote:

> Recently I tried to use my c++ library in Python using SIP.
> In SIP configuration file I added some extra libraries like QtGui,fftw3
> and ssl.
> Compilation and linking pass without any warnings or errors:
>
> g++ -c -pipe -fPIC -O2 -Wall -W -DNDEBUG -I. -I/usr/include/python2.7 -o
> sipmd5testcmodule.o sipmd5testcmodule.cpp
> g++ -c -pipe -fPIC -O2 -Wall -W -DNDEBUG -I. -I/usr/include/python2.7 -o
> sipmd5testmd5test.o sipmd5testmd5test.cpp
> g++ -c -pipe -fPIC -O2 -Wall -W -DNDEBUG -I. -I/usr/include/python2.7 -o
> md5test.o md5test.cpp
> g++ -Wl,--hash-style=gnu -Wl,--as-needed -shared
> -Wl,--version-script=md5test.exp -o md5test.so sipmd5testcmodule.o
> sipmd5testmd5test.o md5test.o -lssl
>
> But when I try to import library:
> ImportError: ./md5test.so: undefined symbol: MD5

It seems to me that your use of the MD5 function isn't resolved at run-time.
Since you're building a library, the linker doesn't care because it expects
that it will find that symbol later.

> When I compiled my code and included it in c++ all worked fine.

When you run ldd on the md5test.so file, what do you get as output? I get
this:

$ ldd md5test.so
        libssl.so.0.9.8 => /usr/lib/i686/cmov/libssl.so.0.9.8 (0xb776f000)
        libstdc++.so.6 => /usr/local/lib/libstdc++.so.6 (0xb7684000)
        libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb765e000)
        libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 (0xb7640000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb74f1000)
        libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 
(0xb73af000)
        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb73ab000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb7396000)
        /lib/ld-linux.so.2 (0xb77d2000)

If the first line in your output indicates that libssl.so cannot be found
then you may need to update your build file to add a suitable library path
for that library.

David


More information about the PyQt mailing list