2011-01-05 21 views
14

OS: Fedora 14problemas al compilar gtkmm

Compilador: g ++ (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)

he instalado gtkmm24-devel desde el repositorio a través de yum. Para asegurarme de que la instalación fue según lo planeado, decidí probar uno de los ejemplos en la página.

#include <gtkmm.h> 

int main(int argc, char *argv[]) { 
    Gtk::Main kit(argc, argv); 
    Gtk::Window window; 
    Gtk::Main::run(window); 
    return 0; 
} 

Di el ejemplo y, ¡eh! Decía que no podía encontrar gtkmm.h, no hay problema, simplemente olvidé vincular la biblioteca. Agregué /usr/include/gtkmm-2.4 a mi búsqueda de biblioteca a través de Eclipse. ¡No bueno, g ++ todavía no puede encontrarlo!

fatal error: gtkmm.h: No such file or directory 

Entonces trato de incluir gtkmm utilizando #include <gtkmm-2.4/gtkmm.h> y recompilar, otro error! :(

/usr/include/gtkmm-2.4/gtkmm.h:87:20: fatal error: glibmm.h: No such file or directory 

Gracias por leer

+1

Eso no es un error "que une". Ese es un error de "compilador". Hay una gran diferencia. – chrisaycock

+0

Lo siento, todavía soy un novato cuando se trata de programación de sistemas. Añadiré mi compilador y mi versión. – t3hb4tman

Respuesta

22

Respuesta corta

utilizar la salida de 'PKG-config-gtkmm 2.4 --cflags' para incluir caminos y 'pkg-config-gtkmm 2.4 --libs' para las bibliotecas para vincular.

Respuesta larga

Se dijo que no pudo encontrar gtkmm.h, no hay problema, me olvidé de vincular la biblioteca.

La creación de un programa C/C++ se realiza en dos pasos separados. Primero se compilan los archivos de origen, dando como resultado archivos de objetos; y luego los archivos del objeto están vinculados entre sí. El error que está obteniendo proviene del paso de compilación.

En Linux, la mayoría de las bibliotecas vienen con archivos pkgconfig para facilitar que otros programas utilicen las bibliotecas. gtkmm también viene con sus propios archivos pkgconfig.

Está intentando especificar manualmente /usr/include/gtkmm-2.4 para incluir la ruta; esto está mal. En su lugar, use la salida de pkgconfig para descubrir dónde se encuentran los archivos de encabezado.Para obtener todos los directorios incluir necesarios para gtkmm, utilice el siguiente comando:

pkg-config gtkmm-2.4 --cflags 

Para vincular, utilice el siguiente comando pkgconfig para obtener las bibliotecas que necesita para enlazar con:

pkg-config gtkmm-2.4 --libs 

usted puede probar en la línea de comando invocando g ++ directamente.

g++ myfirstprogram.cpp -o myfirstprogram `pkg-config gtkmm-2.4 --cflags --libs` 

Para obtener más información, consulte la documentación gtkmm: http://library.gnome.org/devel/gtkmm-tutorial/unstable/sec-basics-simple-example.html.en

+1

Hola kavel. Su respuesta me resultó muy útil para ayudarme a compilar mi proyecto, pero todavía estoy teniendo problemas con el enlace. ¿Estaría dispuesto a ayudarme en mi pregunta aquí (http://stackoverflow.com/questions/8586006/linking-gtkmm-libraries-in-visual-studio)? ¡Muchas gracias! – wrongusername

0

Estos pasos generalmente ayudan a resolver este problema:.

  • buscar en su ordenador glibmm.h
    • Si encontrado - Añadir su directorio a la incluya la lista de rutas
    • Si no se encuentra - Google for glibmm.h y descubra en qué biblioteca está incluida. Encontrará este caso es (¡sorpresa!) glibmm. Instálalo usando tu administrador de paquetes.

El problema, como se señala en los comentarios, es un error del compilador y el compilador está discutiendo acerca de un archivo que falta (cabecera). Los pasos que describí anteriormente encuentran la ubicación del archivo que falta o lo ayudan a instalar una biblioteca a la que pertenece el archivo de encabezado.

+0

Ya tengo la biblioteca instalada y su ruta (/ usr/lib) incluida, pero el error persiste. :( Parece que la instalación de estas bibliotecas solo me da los objetos compartidos (.so). Estaba teniendo el mismo problema con Boost y después de un tiempo de no poder encontrarlo recurrí a compilarlo desde el código fuente (que luego me proporcionó los encabezados adecuados que necesitaba), esperaba evitar eso y comprender exactamente qué estoy haciendo mal, pero si es necesario, lo haré. – t3hb4tman

+0

Tenga en cuenta que debe instalar las versiones de desarrollo de las bibliotecas para obtener archivos de encabezado. Generalmente se marcan con una extensión -dev en sus nombres de paquete. –

+0

Paquete glibmm24-devel-2.24.2-1.fc14.1.i686 ya instalado y la última versión – t3hb4tman