Bug 30246

Summary: Не слинкована с libpython3.3m
Product: Sisyphus Reporter: real@altlinux.org <real.altlinux.org>
Component: libboost_python3-1.53.0Assignee: Ivan A. Melnikov <iv>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: major    
Priority: P3    
Version: unstable   
Hardware: all   
OS: Linux   

Description real@altlinux.org 2014-08-25 06:22:56 MSK
При использовании выскакивает:

ImportError: /usr/lib64/libboost_python3.so.1.53.0: undefined symbol: PyUnicode_AsUTF8String

$ findsym PyUnicode_AsUTF8String
/usr/lib64/libpython3.3m.so: 00000000000e61e0 T PyUnicode_AsUTF8String
/usr/lib64/libpython3.3m.so.1.0: 00000000000e61e0 T PyUnicode_AsUTF8String

$ ldd /usr/lib64/libboost_python3.so.1.53.0
        linux-vdso.so.1 (0x00007fff97089000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f543a042000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f5439d3e000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f5439b27000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f5439778000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f543a4b2000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f543947a000)
Comment 1 Ivan A. Melnikov 2014-08-25 11:41:08 MSK
Boost.Python специально не линкуется с libpythonX.Y.so. Сделано это для того чтобы модули, собранные с ней, можно было использовать в приложениях, которые берут питоновский рантайм откуда-то ещё. Например, наш /usr/bin/python3 собран не с этой либой, а статически; то есть, если libboost_python собрать с libpythonX.Y.so, она притянется внутрь процесса, где она совершенно не нужна, с непредсказуемыми последствиями.

To sum up: this is not a bug, this is a feature, and important one.

Программы, которые хотят исползовать питон, но не его интерпретатор, всё равно должны линковаться с нужной libpython явно. Модули же с ней линковать не надо, и даже опасно.