On Mon, Dec 14, 2009 at 8:25 PM, Alexey Akimov
<alexey.akimo...@gmail.com> wrote:
> Hello to everyone,
>
> I get confused trying to port my boost python extension module. So I've made
> a shared object file test.so which actually perfectly works in the original
> development directory. However, when I copy this file to another Linux
> machine (I also copy some extra libraries such as
> libboost_python-gcc344-1_39.so.1.39.0 and make sure that both .so files are
> in PATH and LD_LIBRARY_PATH) I recieve "Import Error: undefined symbol:
> /home/username/bin/libboost_python-gcc34-1_39.so.1.39.0:
> PyUnicodeUCS4_FromEncodedObject". I aslo istalled the same version (compared
> to one which was used for creation of the module) of Python to the Linux
> machine where I try to use my extension.
> Can anyone explain me where could the problem be.

In my opinion you compiled the module against Python version/build
which is differ from the "run" environment.

> Also I would clarify what
> is the general way to export just created modules? As I understand the order
> is following: 1) create .so object (look for it in
> /bin/compiler-name/release-or-debug/module-name.so directory) 2) copy this
> file as well as other necessary library to some /bin or /lib directory (for
> convenience) - and make sure they are in PATH and LD_LIBRARY_PATH variables.

You can use "ldd" command to find out dependencies. In the case, you
have few interpreters it also can help you to see what python*.so will
be actually used.

> 3) import the module in python interpreter.
>
> Do I need to do something else (define some other variables or make some
> other changes) in order to make my module work?

In case you have few modules, sometimes you need to tweak "dlopen" flags.

-- 
Roman Yakovenko
C++ Python language binding
http://www.language-binding.net/
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to