library c++ boost build linker bjam

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.