2012-01-09 7 views
5

Construí mis propias GCC y bibliotecas y puse las bibliotecas en /opt/gcc-4.6.2/lib, por lo que las bibliotecas con nombres genéricos como libstdc++ no interfieren con otras partes del sistema. Esto significa que tengo que especificar la ruta de búsqueda de bibliotecas manualmente:La ruta de búsqueda de la biblioteca CMake set failed en testCXXCompiler

$> g++-4.6.2 -L/opt/gcc-4.6.2/lib input.cpp 

Al tratar de obtener mi proyecto de construir con CMake, me parece que no puede encontrar la manera de decirle a CMake para buscar esa biblioteca. El documentation dice que use CMAKE_LIBRARY_PATH que yo pongo en la línea que se utiliza para generar mis Makefile:

$> cmake .. -DCMAKE_CXX_COMPILER=g++-4.6.2 \ 
      -DCMAKE_LIBRARY_PATH=/opt/gcc-4.6.2/lib 

Esto, sin embargo, falla en el simple análisis de la compilación del programa:

# blah blah blah... 

/usr/local/bin/g++-4.6.2 
CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o -o cmTryCompileExec 
-rdynamic 

/usr/bin/ld: cannot find -lstdc++ 

# blah blah blah... 

Me parece que no puede para encontrar la magia vudú necesaria para que CMake emita -L/opt/gcc-4.6.2/lib para la compilación de prueba (sé CMAKE_LIBRARY_PATH funciona después de se construye el proyecto). ¿Cómo puedo forzar a CMake a utilizar una ruta de biblioteca alternativa para vincular los ejecutables de prueba?

Respuesta

2

Hmm, no estoy familiarizado con la forma en que gcc se crea, pero supongo que debería saber dónde buscarlo. Tal vez deberías probar la compilación cruzada.

Además, CMAKE_LIBRARY_PATH no ayudará a su problema, ya que establece la ruta de búsqueda de bibliotecas solo para CMake, no para el compilador.

Por lo tanto, no veo otra opción que no sea establecer CMAKE_CXX_FLAGS o CMAKE_EXE_LINKER_FLAGS en -L/opt/gcc-4.6.2/lib.

Cuestiones relacionadas