Как сказать, какая версия python libboost python.так это использование?

Я хотел бы знать, какая версия python boost_python.как и ожидание. Это на компьютере с несколькими версиями python, и я не создавал/не устанавливал boost (и у меня нет корневого доступа).

Как я могу сказать, какая версия python boost_python.так компилируется для?

Я не нашел ничего полезного в выходе из ldd, но включил его здесь, Если кто-то еще что-то видит.

-bash-3.2$ ldd -v libboost_python.so.1.46.1 
libutil.so.1 => /lib64/libutil.so.1 (0x00002ad65582d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ad655a30000)
libdl.so.2 => /lib64/libdl.so.2 (0x00002ad655c4b000)
librt.so.1 => /lib64/librt.so.1 (0x00002ad655e50000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00002ad656059000)
libm.so.6 => /lib64/libm.so.6 (0x00002ad656359000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002ad6565dd000)
libc.so.6 => /lib64/libc.so.6 (0x00002ad6567eb000)
/lib64/ld-linux-x86-64.so.2 (0x000000374c600000)

Version information:
./libboost_python.so.1.46.1:
    libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
    libpthread.so.0 (GLIBC_2.2.5) => /lib64/libpthread.so.0
    libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
    libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
    libstdc++.so.6 (CXXABI_1.3) => /usr/lib64/libstdc++.so.6
    libstdc++.so.6 (GLIBCXX_3.4) => /usr/lib64/libstdc++.so.6
/lib64/libutil.so.1:
    libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/libpthread.so.0:
    ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
    ld-linux-x86-64.so.2 (GLIBC_2.2.5) => /lib64/ld-linux-x86-64.so.2
    ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
    libc.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
    libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
    libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/libdl.so.2:
    ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
    libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
    libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/librt.so.1:
    ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
    libpthread.so.0 (GLIBC_2.2.5) => /lib64/libpthread.so.0
    libpthread.so.0 (GLIBC_PRIVATE) => /lib64/libpthread.so.0
    libc.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
    libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
    libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
/usr/lib64/libstdc++.so.6:
    ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
    libgcc_s.so.1 (GCC_4.2.0) => /lib64/libgcc_s.so.1
    libgcc_s.so.1 (GCC_3.3) => /lib64/libgcc_s.so.1
    libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
    libc.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
    libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
    libc.so.6 (GLIBC_2.3) => /lib64/libc.so.6
    libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/libm.so.6:
    libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/libgcc_s.so.1:
    libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
    libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/libc.so.6:
    ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
    ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2

4 ответов


интересно, что в моей системе OS X,otool -L перечисляет библиотеку python, но в системе linux у меня есть доступ к ней, похоже, оставлен как неудовлетворенная зависимость и не указан в ldd выход.

в моем случае я знаю, что он был скомпилирован против python 2.7, но проверка вывода strings /.../libboost_python.so нигде не упоминается 2.7 и 27 встречается только в искаженных символах, не связанных с версией python.

поэтому я заключаю, что невозможно сказать, без поиск различий API в символах между, скажем, версиями 2.6, 2.7.

возможно, проверка измененной метки времени сузит ее?


From:https://github.com/mapnik/mapnik/wiki/InstallationTroubleshooting

", а иногда даже это не работает. Подсказка: передайте флаг-d2, чтобы увидеть все команды компиляции, отправленные в gcc bjam, и вы, вероятно, увидите что-то вроде-I/usr/include/python24 в аргументах компиляции, когда это должно быть-I/usr/include/python26 (или какая-то более старая версия заголовков python). Если это произойдет, вы можете создать полный файл конфигурации (со всей возможной информацией python) и передать ссылка на это в командной строке bjam. Документы по этому вопросу здесь: http://www.boost.org/doc/libs/1_42_0/libs/python/doc/building.html#configuring-boost-build, и следующий пример:

создайте файл с именем 'user-config.jam' (но измените версии python на соответствующие):

import option ;
import feature ;
if ! gcc in [ feature.values <toolset> ]
{
    using gcc ;
}
project : default-build <toolset>gcc ;
using python
     : 2.5 # version
     : /usr/bin/python2.5 # cmd-or-prefix
     : /usr/include/python2.5/ # includes
     : /usr/lib/python2.5/config/ # a lib actually symlink
     : <toolset>gcc # condition
     ;
libraries = --with-python ;

"

ищите a .файл конфигурации jam. Если он существует, проверьте команду "using python". Если он не существует, запустите флаг-d2 против bjam, чтобы определить по умолчанию Python, который он использует. Это, очевидно, не прямой метод и просто оставит вас с вероятным ответом, учитывая входные данные (но, возможно, этого достаточно).


это то, что вы ищете?

~/Desktop$ dpkg --list | grep libboost
ii  libboost-filesystem1.46.1                      1.46.1-5ubuntu2                         filesystem operations (portable paths, iteration over directories, etc) in C++
ii  libboost-program-options1.46.1                 1.46.1-5ubuntu2                         program options library for C++
ii  libboost-python-dev                            1.46.1.1                                Boost.Python Library development files (default version)
ii  libboost-python1.46-dev                        1.46.1-5ubuntu2                         Boost.Python Library development files
ii  libboost-python1.46.1                          1.46.1-5ubuntu2                         Boost.Python Library
ii  libboost-regex1.46.1                           1.46.1-5ubuntu2                         regular expression library for C++
ii  libboost-serialization1.46.1                   1.46.1-5ubuntu2                         serialization library for C++
ii  libboost-signals1.46.1                         1.46.1-5ubuntu2                         managed signals and slots library for C++
ii  libboost-system1.46.1                          1.46.1-5ubuntu2                         Operating system (e.g. diagnostics support) library
ii  libboost-thread1.46.1                          1.46.1-5ubuntu2                         portable C++ multi-threading
ii  libboost1.46-dev                               1.46.1-5ubuntu2                         Boost C++ Libraries development files

вышеизложенное работает для дистрибутивов на основе debian. Я считаю, что эквивалент Fedora должен быть:

rpm -qa | grep libboost

HTH!


Я понимаю, что OP спрашивал о том, как это сделать в среде Linux, но у меня был тот же вопрос в среде Windows, и я подумал, что это может быть полезной информацией, чтобы поделиться здесь.

чтобы увидеть DLL Python, которая будет автоматически связана с результирующим исполняемым файлом, используйте dumpbin утилита, которая поставляется с Visual Studio. Просто откройте командную строку разработчика Visual Studio и запустите:

dumpbin /DIRECTIVES libboost_python3-*.lib | findstr DEFAULTLIB:python

это, по крайней мере, скажет вам основную / минорную версию Python это было использовано при создании Boost. Например, если вы использовали Python 3.5.2 при создании Boost, эта команда вернет кучу строк с текстом:

/ DEFAULTLIB: python35.Либ!--3-->