c++ - library - Building Boost para enlaces estáticos(MinGW)
boost windows binary (4)
Estoy construyendo Boost (estoy usando System y FileSystem) para MinGW usando bjam:
bjam --toolset=gcc stage
Y funciona bien, pero quiero poder vincularlo estáticamente (tengo que tener un único archivo para el producto final), así que probé:
bjam --link=static --toolset=gcc stage
Pero obtengo el mismo resultado. ¿Algunas ideas?
edito la segunda pregunta en una fila que he respondido momentos después de la publicación: aunque creo que dejaré esto aquí para otros.
bjam --build-type=complete --toolset=gcc stage
Construirá tanto dinámico como estático con seguridad.
Creo que el enlace es una propiedad en lugar de una opción para bjam. Eso significa que no debería haber ... antes de eso.
Esta es mi línea de comando para construir solo bibliotecas estáticas (sin embargo, visual c ++):
bjam install --toolset=msvc variant=release link=static threading=multi runtime-link=static
Asignando eso a tu comando de compilación original, diría que debería verse más o menos así:
bjam --toolset=gcc link=static stage
o quizás:
bjam stage --toolset=gcc link=static
Prueba correr
bjam --help
para más información sobre propiedades y opciones para bjam.
No he creado esto en MinGW, pero creo que su primera compilación generará tanto bibliotecas dinámicas como estáticas y las únicas únicas estáticas, por lo que si no limpia los directorios de compilación entre las compilaciones, probablemente se verá igual.
Cuando escribe "Tengo que tener un solo archivo ..." ¿quiere decir que necesita una única biblioteca que contenga todas las bibliotecas de impulso? Si es así, sospecho que es posible que tengas que ''ar'' ellos juntos.
Solo quiero señalar que con el nuevo impulso (febrero de 2011) necesita construir bjam también ahora ... por alguna razón, el actual bjam descargable no funciona limpiamente.
Entonces primero:
cd .../boost_1_45_0/tools/build/v2/engine/src
build.bat mingw
Tendrá que agregar bjam a la RUTA (desde el panel de control, no solo en el indicador de cmd). Entonces
cd .../boost_1_45_0/
bjam --build-type=complete --toolset=gcc stage
Mi configuración es Vista, Boost 1.45, MinGW 4.5 y compilación desde cmd.exe no msys.
http://code-slim-jim.blogspot.com/2011/02/boost-in-vista-using-mingw-and-cmdexe.html
Utilizo la siguiente línea de comando para compilar tanto las versiones estáticamente vinculadas como las vinculadas dinámicamente de boost:
bjam "-sBUILD=debug release <runtime-link>static/dynamic <threading>multi" stage
Esto se hace con visual c ++ en Windows YMMV.