Tutorial de compilação boost-python com o VS-2015 CTP 5 e Python 3.5a no Windows 10 TP
Estou tentando pegar otutorial do módulo de extensão boost-python trabalhando em um compilador C ++ 14 moderno no Windows 10. Fiz o download das versões mais recentes do boost 1.57 e da fonte python 3.5a usando vc-14 (VS 2015 CTP 5).
Compilei o python da fonte usando o VS 2015 CTP 5 e estas instruções:1.1.3.3 janelas.
Eu executei o comando
.\bootstrap.bat && .\b2 stage toolset=msvc --with-python
na pasta do projeto boost c: \ boost
Este é o arquivo user-config.jam no meu diretório pessoal:
using msvc : 14.0 : C:\\Program\ Files\ (x86)\\Microsoft\ Visual\ Studio\ 14.0\\VC\\bin\\cl.exe ;
using python
: 3.5 # Version
: C:\\python35a3\\PCBuild\\win32\\python.exe # Python Path
: C:\\python35a3\\include # include path
: C:\\python35a3\\libs # lib path
: <define>BOOST_ALL_NO_LIB=1
;
A execução do bjam no diretório do tutorial resulta em uma incompatibilidade ao criar o arquivo pdb:
c:\boost\libs\python\example\tutorial>bjam --debug-configuration
notice: found boost-build.jam at C:/boost/libs/python/example/tutorial/boost-build.jam
notice: loading Boost.Build from C:/boost/tools/build/src
....
notice: Loading user-config configuration file 'user-config.jam' from 'C:/Users/marcel'.
notice: [msvc-cfg] msvc-14.0 detected, command: 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe'
notice: [msvc-cfg] msvc-12.0 detected, command: 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe'
notice: will use 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe' 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe' for msvc, condition <toolset>msvc-14.0
notice: [msvc-cfg] condition: '<toolset>msvc-14.0/<architecture>/<address-model>', setup: 'call "C:\Users\marcel\AppData\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" >nul
'
notice: [msvc-cfg] condition: '<toolset>msvc-14.0/<architecture>/<address-model>32', setup: 'call "C:\Users\marcel\AppData\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" >nul
'
notice: [msvc-cfg] condition: '<toolset>msvc-14.0/<architecture>x86/<address-model>', setup: 'call "C:\Users\marcel\AppData\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" >nul
'
notice: [msvc-cfg] condition: '<toolset>msvc-14.0/<architecture>x86/<address-model>32', setup: 'call "C:\Users\marcel\AppData\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" >nul
'
notice: [python-cfg] Configuring python...
notice: [python-cfg] user-specified version: "3.5"
notice: [python-cfg] user-specified cmd-or-prefix: "C:\python35a3\PCBuild\amd64\python_d.exe"
notice: [python-cfg] user-specified includes: "C:\python35a3\include"
notice: [python-cfg] user-specified libraries: "C:\python35a3\libs"
notice: [python-cfg] user-specified condition: "<define>BOOST_ALL_NO_LIB=1"
notice: [python-cfg] Checking interpreter command "C:\python35a3\PCBuild\amd64\python_d.exe"...
notice: [python-cfg] running command 'DIR /-C /A:S "C:\Python35a3\PCbuild\amd64\python_d.exe" 2>&1'
notice: [python-cfg] running command 'C:\python35a3\PCBuild\amd64\python_d.exe -c "from sys import *; print('version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' % (version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" 2>&1'
notice: [python-cfg] ...requested configuration matched!
notice: [python-cfg] Details of this Python configuration:
notice: [python-cfg] interpreter command: "C:\python35a3\PCBuild\amd64\python_d.exe"
notice: [python-cfg] include path: "C:\python35a3\include"
notice: [python-cfg] library path: "C:\python35a3\libs"
notice: [python-cfg] DLL search path: "C:\python35a3"
notice: Searching '../../../..' for project-config configuration file 'project-config.jam'.
notice: Loading project-config configuration file 'project-config.jam' from '../../../..'.
....
...patience...
...patience...
...found 1893 targets...
...updating 6 targets...
msvc.link.dll bin\msvc-14.0\debug\threading-multi\hello_ext.dll
Creating library bin\msvc-14.0\debug\threading-multi\hello_ext.pdb and object bin\msvc-14.0\debug\threading-multi\hello_ext.exp
LINK : fatal error LNK1207: incompatible PDB format in 'c:\boost\libs\python\example\tutorial\bin\msvc-14.0\debug\threading-multi\hello_ext.pdb'; delete and rebuild
....
...removing bin\hello.test\msvc-14.0\debug\threading-multi\hello.py
...skipped <pbin\hello.test\msvc-14.0\debug\threading-multi>hello for lack of <pbin\hello.test\msvc-14.0\debug\threading-multi>hello.py...
...failed updating 3 targets...
...skipped 3 targets...
O comando que produz a saída de erro é:
call "C:\Users\marcel\AppData\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" >nul
link /NOLOGO /INCREMENTAL:NO /DLL /NOENTRY /DEBUG /MACHINE:X86 /MANIFEST /subsystem:console /out:"bin\msvc-14.0\debug\threading-multi\hello_ext.dll" /IMPLIB:"bin\msvc-14.0\debug\threading-multi\hello_ext.pdb" /LIBPATH:"C:\python35a3\libs" @"bin\msvc-14.0\debug\threading-multi\hello_ext.dll.rsp"
Creating library bin\msvc-14.0\debug\threading-multi\hello_ext.pdb and object bin\msvc-14.0\debug\threading-multi\hello_ext.exp
LINK : fatal error LNK1207: incompatible PDB format in 'c:\boost\libs\python\example\tutorial\bin\msvc-14.0\debug\threading-multi\hello_ext.pdb'; delete and rebuild
O comando link parece ser consistente com a forma como python e boost são compilados (32 bits na mesma versão do compilador).
Existe uma maneira de diagnosticar onde esse erro se originou?
ATUALIZAR: Compilando com VC9 (VS2010) e uma instalação python 3.4 pré-construída. Ainda obtenho o mesmo erro:
link /NOLOGO /INCREMENTAL:NO /DLL /NOENTRY /DEBUG /MACHINE:X86 /MANIFEST /subsystem:console /out:"bin\msvc-10.0\debug\threading-multi\hello_ext.pyd" /IMPLIB:"bin\msvc-10.0\debug\threading-multi\hello_ext.pdb" /LIBPATH:"C:\python34\libs" @"bin\msvc-10.0\debug\threading-multi\hello_ext.pyd.rsp"
Creating library bin\msvc-10.0\debug\threading-multi\hello_ext.pdb and object bin\msvc-10.0\debug\threading-multi\hello_ext.exp
LINK : fatal error LNK1207: incompatible PDB format in 'c:\boost\libs\python\example\tutorial\bin\msvc-10.0\debug\threading-multi\hello_ext.pdb'; delete and rebuild
Executando o interpretador python para confirmar a versão correta do compilador:
c:\Python34\python.exe
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:15:05) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
Aparentemente, esse erro não tem nada a ver com o "sangramento" do ambiente em que a compilação está sendo executada. Pelo contrário, é um resultado direto de um problema de configuração de aumento de build.
ATUALIZAÇÃO 2: Tentando o mesmo teste com os resultados pré-criados do Python 2.7 e do VS 2008, com o mesmo erro.
ATUALIZAÇÃO 3 RESOLVIDO Isso se baseia corretamente no boost v1.55 quando as seguintes etapas são executadas:
Faça o download e crie o python 3.5 a3 e o boost 1.55 com o VC14 modificando o arquivo user-config.jam no diretório inicial e executando "bjam stage --use-python"Mova os arquivos resultantes no estágio \ lib do libboost * para impulsionar * execute o bjam no diretório do tutorialAltere o comando link incorreto adicionando a seguinte opção LIBPATH: / LIBPATH: c: \ boost_1_55_0 \ stage \ libO problema de vincular ao python 3.5 alpha3 com VC14 é isolado para aumentar as compilações da versão 1.5.5.