photobook - glib traduccion
¿Por qué no puedo construir un "mundo de hola" para glib? (5)
Como @chris
dijo use pkg-config
.
glibconfig.h is missing
es porque este archivo no está en /usr/include/glib-2.0
, sino en /usr/lib/glib-2.0.
Por lo tanto, debe incluir también esta ruta /usr/lib
o copiar el archivo a /include/glib-2.0
Así que aquí está el programa glib más simple del mundo:
#include <glib.h>
Intento compilarlo con gcc test.c
y obtengo:
test.c:1:18: error: glib.h: No such file or directory
Así que me aseguro de tener los paquetes correctos:
# dpkg -l | grep libglib
ii libglib-perl 1:1.183-1 Perl interface to the GLib and GObject libra
ii libglib1.2-dev 1.2.10-19build1 The GLib library of C routines (development)
ii libglib1.2ldbl 1.2.10-19build1 The GLib library of C routines
ii libglib2.0-0 2.20.1-0ubuntu2 The GLib library of C routines
ii libglib2.0-cil 2.12.1-1ubuntu2 CLI binding for the GLib utility library 2.1
ii libglib2.0-data 2.18.2-0ubuntu2 Common files for GLib library
ii libglib2.0-dev 2.20.1-0ubuntu2 Development files for the GLib library
ii libglibmm-2.4-1c2a 2.18.1-1 C++ wrapper for the GLib toolkit (shared lib
Luego busco cualquier "glib.h" en cualquier lugar en / usr / include. Obtengo dos, /usr/include/glib-1.2/glib.h y /usr/include/glib-2.0/glib.h. Entonces intento:
$ gcc -I/usr/include/glib-2.0 -Wall test.c
In file included from /usr/include/glib-2.0/glib/galloca.h:34,
from /usr/include/glib-2.0/glib.h:32,
from test.c:2:
/usr/include/glib-2.0/glib/gtypes.h:34:24: error: glibconfig.h: No such file or directory
(aproximadamente 10,000 errores más recortados)
No parece tener un glibconfig.h
ninguna parte de mi computadora.
¿Qué hago ahora?
También estoy usando glib.h- Haz esto para compilar todos tus programas glib.h :)
gcc `pkg-config --cflags --libs glib-2.0` filename.c
Asegúrate de rodear a pkg-config --cflags --libs glib-2.0
con comillas que encuentras debajo de tilde (la tecla más a la izquierda en el teclado querty).
Gracias más tarde ..: P
glib tiende a ocultarse ... Su declaración de inclusión no funciona porque GCC no busca automáticamente subdirectorios, por lo que no puede ver glib.h en glib-1.2 o glib-2.0.
Lea la página Compilación de Aplicaciones GLib en los manuales de GLIB ... usted usa comandos como pkg-config --cflags glib-2.0
para obtener los indicadores correctos para GCC.
La manera canónica de hacer lo que estás intentando es
% gcc test.c -Wall -o test `pkg-config --cflags --libs glib-2.0`
Tenga en cuenta los "back-ticks", que le dicen al shell que ejecute el comando pkg-config "in situ".
apt-get build-dep
es tu amigo, nadie puede recordar todos los paquetes que necesitas para construir algo.
> > The canonical way to do what you are trying is
> % gcc test.c -Wall -o test `pkg-config --cflags --libs glib-2.0`
Lo siento, pero no. Esa es una idea errónea común, que simplemente funciona en la mayoría de los casos en sistemas basados en ELF, Linux en particular. La forma canónica es pasar los cflags y las bibliotecas por separado, en las ubicaciones correctas y tradicionales en la línea de comandos, así:
gcc -Wall -o test `pkg-config --cflags glib-2.0` test.c `pkg-config --libs glib-2.0`
Es una lástima que pkg-config acepte las opciones --cflags y --libs al mismo tiempo, ya que significa que este meme incorrecto nunca morirá, y las personas que lo usan en Linux seguirán desconcertadas cuando intenten lo mismo en otras plataformas.