2010-08-07 18 views
6

que tienen que construir Boost fuera del árbol de directorios "habitual" (es decir, en lugar de /custom/dir/usr), que no es que gran parte de un problema: Sólo tiene que pasar a --prefix=/custom/path./runscript.sh/./bjam, y ahí lo tienes.Cómo forzar a Boost a usar rpath?

O eso creía.

El problema es que algunas de las bibliotecas Boost dependen unos de otros, y - utilizar el proceso de construcción por defecto de pasar por ./bootstrap.sh/./bjam - parece que el camino --prefix no se añade a la ruta de búsqueda de biblioteca para las bibliotecas Boost, es decir, no se aplica -Wl,-rpath. Eso significa que las bibliotecas de Boost que dependen de otras bibliotecas de Boost no pueden encontrarlas en tiempo de ejecución.

Mi aplicación - la vinculación de esos /custom/path bibliotecas Boost - ya falla en ./configure etapa porque libboost_filesystem.so no puede encontrar libboost_system.so, a pesar de que me pasó -Wl,-rpath=/custom/path/boost/lib a mi propia línea compilador (es decir, el camino correcto para las librerías Boost, hago doble registramos que libboost_system.so está allí).

Ahora, para evitar métodos duros como configurar LD_LIBRARY_PATH, me gustaría construir Boost de forma que todas las bibliotecas de Boost tengan la ruta de búsqueda adecuada para las otras compilaciones de Boost compiladas en ellas. Sin embargo, no pude encontrar el procedimiento adecuado para eso. Alguien puede ayudarme?

Respuesta

5

Puedes añadir compilador & opciones de enlace durante la construcción de la línea de comandos con:

bjam dll-path=/custom/path 

Hay un elemento FAQ en la documentación Boost construir alrededor de este (véase BBv2 docs).

+0

Excelente, ¡gracias! – DevSolar

+2

Ejem ... aparentemente esto dejó de funcionar con Boost 1.45.0 (la misma invocación exacta). No pude encontrar ninguna mención de ningún cambio relevante en 1.45.0; ¿por casualidad sabes más que yo? – DevSolar

+0

Hm, no sé más de lo que haces en este caso. Pero si dejara de funcionar, lo consideraría un error. Y debe ser informado como tal. – GrafikRobot

Cuestiones relacionadas