2011-03-14 11 views
13

Estoy usando Windows 7 de 64 bits y quiero compilar las bibliotecas no precompiladas (específicamente, necesito el Sistema de archivos) desde la línea de comandos (no utilizo MSVC). Tengo MinGW, pero leí en el sitio web de Boost que el shell MSYS no es compatible, por lo que estoy tratando de compilar las bibliotecas desde el símbolo del sistema de Windows.No se pueden construir bibliotecas de Boost con GCC

En primer lugar, corriendo bootstrap.bat resultados en el siguiente error:

Building Boost.Jam build engine 
'cl' is not recognized as an internal or external command, 
operable program or batch file. 

Failed to build Boost.Jam build engine. 
Please consult bjam.log for furter diagnostics. 

You can try to obtain a prebuilt binary from 

    http://sf.net/project/showfiles.php?group_id=7586&package_id=72941 

Also, you can file an issue at http://svn.boost.org 
Please attach bjam.log in that case. 

Además, no es bjam.log archivo en cualquier lugar en el directorio boost_root.

Sin tener en cuenta este error, y tratando de ejecutar el archivo descargado bjam.exe, me sale otro error:

c:/boost_1_45_0/tools/build/v2/build\configure.jam:145: in builds-raw 
*** argument error 
* rule UPDATE_NOW (targets * : log ? : ignore-minus-n ?) 
* called with: (<pbin.v2\libs\regex\build\gcc-mingw-4.5.2\debug\address-model64\architecture-x86>has_icu.exe : : ignore-minus-n : ignore-minus-q) 
* extra argument ignore-minus-q 
(builtin):see definition of rule 'UPDATE_NOW' being called 
c:/boost_1_45_0/tools/build/v2/build\configure.jam:179: in configu 
re.builds 
c:/boost_1_45_0/tools/build/v2/build\configure.jam:216: in object(
check-target-builds-worker)@409.check 

etc, con un buen montón de quejas. Establecer las opciones de 'arquitectura' y 'modelo de dirección' no ayuda.

¿Alguna sugerencia?

@Andre

Siguiendo la sugerencia de Andre, he creado Mingw-bjam que se estaba ejecutando durante una hora y media y construyó la mayor parte de las bibliotecas, pero no el que necesito en este momento: Sistema de archivos. Intentando compilar solo el Sistema de archivos, especificar la versión 2 con define="BOOST_FILESYSTEM_VERSION=2" y --disable-filesystem3 no ayuda. Me sale el siguiente error:

gcc.compile.c++ bin.v2\libs\filesystem\build\gcc-mingw-4.5.2\debug\v3\src\operations.o 
In file included from ./boost/filesystem/v3/operations.hpp:24:0, 
      from libs\filesystem\v3\src\operations.cpp:48: 
./boost/filesystem/v3/config.hpp:16:5: error: #error Compiling Filesystem version 3 
file with BOOST_FILESYSTEM_VERSION defined != 3 
libs\filesystem\v3\src\operations.cpp:647:26: warning: 
'<unnamed>::create_symbolic_link_api' defined but not used 

"g++" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -DBOOST_ALL_NO_LIB=1 - 
DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_FILESYSTEM_VERSION=2 -DBOOST_SYSTEM_DYN_LINK=1 - 
I"." -c -o "bin.v2\libs\filesystem\build\gcc-mingw-4.5.2\debug\v3\src\operations.o" 
"libs\filesystem\v3\src\operations.cpp" 

etc, con una gran cantidad de ...failed declaraciones.

¿Algún consejo aquí?

Respuesta

9

El script bootstrap supone que el compilador msvc está disponible. Pero puede compilar bjam a mano sin el script bootstrap:

Entre en el directorio tools \ build \ v2 \ engine \ src y llame a "build.bat mingw". Creará un bjam.exe. Puede ponerlo en su%% PATH% o quizás en el directorio raíz de refuerzo ...

Para ser honesto, generalmente construyo bjam así con el compilador msvc y uso este "msvc-bjam" para compilar mi mingw impulsar las bibliotecas.

+0

Hola Andre, muchas gracias. Eso lo hizo, aunque bjam.exe no funcionó con los indicadores específicos de 64 bits. ! – vkotor

+0

Acabo de usar MinGW64 para cosas específicas de 64 bits. Bjam trabajó con la última versión. –

+2

Ahora (impulso v1.63) el directorio es \ tools \ build \ src \ engine. El comando es build.bat gcc. bjam.exe y b2.exe están en \ tools \ build \ src \ engine \ bin.ntx86 – ravenspoint

2

Entonces ... la primera parte del problema fue resuelta por la sugerencia de Andre. La segunda parte se resolvió estableciendo la variable BOOST_FILESYSTEM_VERSION en 3 en todas partes (el error anterior se queja de incompatibilidad con lo establecido en el archivo user.hpp). Aunque esta no es la opción predeterminada para Boost 1.45 que estoy usando, es lo único que funciona (es decir, bjam quiere compilar la versión 3 sin importar qué). Así que ahora tengo la versión 3 de la biblioteca del sistema de archivos, y la versión 2 para todos los demás, pero eso no parece ser un problema por el momento.

tengo un problema con el uso de Boost con OpenCV y bibliotecas Eigen, aunque fuera ... a la siguiente reto;)

28

Es fácil. Solo usa "bootstrap".bate de gcc" para seleccionar GCC

+3

, pero es necesario poner "C: \ MinGW \ bin" dentro de su variable de entorno PATH de Windows y reiniciar de antemano, de lo contrario el comando _gcc_ es desconocido. – Jook

0

Ya que no puedo comentar, sin embargo, quiero añadir que me encontré

bootstrap mingw

para generar b2 adecuadamente y luego

b2 --build-dir="c:\boost_release" toolset=gcc --build-type=complete "c:\boost_release\stage"

El INCLUYE se ubicará en su carpeta raíz de refuerzo (boost_1_58_00/boost) y sus binarios en la carpeta de compilación especificada.

Cuestiones relacionadas