¿Cómo puedo incluir una biblioteca C necesaria usando GCC?

3 minutos de lectura

avatar de usuario de multiholle
multiagujero

Estoy tratando de compilar el ejemplo simple de C de este tutorial en ubuntu utilizando CCG. ¿Qué debo usar como argumentos para que GCC incluya las bibliotecas necesarias para #include <libappindicator/app-indicator.h>?

  • Relacionado: ¿Cuál es el significado de -lm en GCC?, ¿Por qué tienes que vincular la biblioteca de matemáticas en C?y Opciones GCC -lm -lz -lrt: ¿de qué se tratan?

    -Peter Mortensen

    el dia de ayer


Avatar de usuario de Kristofer
Kristofer

-I<search path to include files>
-L<search path to the lib file>
-l<libname>

  • de hecho @debuti … además, parece que uno puede omitir el espacio entre los I o L y el searchpathy ponerlo todo junto como: -I<searchpath to include files>

    – DarkCygnus

    4 de julio de 2018 a las 21:07


  • Eso no responde la pregunta, solo regurgita la documentación (incompleta). Una respuesta adecuada al menos abordaría posibles convenciones de nombres utilizado para derivar el argumento real. ¿Cuál debería ser el argumento real? -llibappindicator? -lappindicator? ¿Algo más?

    -Peter Mortensen

    el dia de ayer


Avatar de usuario de Vijay Mathew
vijay mateo

Utilizar el -l opción de línea de comando. Puede especificar la ruta de búsqueda de la biblioteca con el -L opción. P.ej:

gcc -o myprogram -lfoo -L/home/me/foo/lib myprogram.c

Esto vinculará myprogram con la biblioteca estática libfoo.a en la carpeta /home/me/foo/lib.

  • Eso no responde la pregunta, solo regurgita la documentación (incompleta). Una respuesta adecuada al menos abordaría posibles convenciones de nombres utilizado para derivar el argumento real. ¿Cuál debería ser el argumento real? -llibappindicator? -lappindicator? ¿Algo más?

    -Peter Mortensen

    el dia de ayer


Avatar de usuario de QuantumMechanic
Mecánica cuántica

si usaste apt-get, Synaptic Package Manageretc para obtener la appindicator librería (vs. construirla desde la fuente), ¿solo instaló el libappindicator1 paquete o lo hiciste además Instalar en pc libappindicator-dev para obtener el libappindicator archivos de encabezado? Los paquetes de Linux muy a menudo han separado las bibliotecas de tiempo de ejecución de los encabezados de tiempo de compilación. De esa manera, las personas que solo necesitan las bibliotecas para satisfacer un enlace dinámico no tienen que instalar encabezados innecesarios. Pero dado que está haciendo desarrollo, necesita esos encabezados y, por lo tanto, necesita el libappindicator-dev paquete también.

  • Agregué el paquete libappindictaor-dev. ¿Qué tengo que usar con gcc como argumento -l?

    – multiagujero

    16 mayo 2011 a las 11:52

  • De acuerdo a packages.ubuntu.com/hu/natty/i386/libappindicator-dev/filelist necesitas usar -I/usr/include/libappindicator-0.1/libappindicator

    – Mecánica cuántica

    16 mayo 2011 a las 12:39

avatar de usuario de hytromo
hytromo

Lo que hago es:

pkg-config --list-all | grep indicator

avatar de usuario de lijo
lijo

Usar:

gcc example.c -o example  `pkg-config --cflags --libs appindicator-0.1`

pkg-config obtendrá los indicadores de biblioteca e inclusión necesarios para libappindicator y sus dependencias. Esto supone libappindictaor-dev el paquete ya está instalado.

  • ¿Qué se supone que sucederá con esa invocación de línea de comando? ¿Cómo funcionan esos coqueteos? ¿Hay algún intercambio usando entrada estándar y salida estándar? ¿O no? En general, ¿por qué es esto necesario? Responda editando (cambiando) su respuesta, no aquí en los comentarios (**** sin que **** “Editar:”, “Actualizar:”, o similar – la respuesta debería aparecer como si hubiera sido escrita hoy).

    -Peter Mortensen

    el dia de ayer


Avatar de usuario de Peter Mortensen
Pedro Mortensen

Estás tratando de hacer un GTK aplicación, y las soluciones anteriores son aplicables en cualquier lugar como usar el -l opción y -YO opción,

Sin embargo, para aplicaciones GTK, también puede usar pkg-config lo que lo hace más fácil ya que sus rutas pueden ser predefinidas.

Un ejemplo interesante se puede encontrar en
http://developer.gnome.org/gtk/2.24/gtk-compiling.html

  • ¿Qué se supone que sucederá con esa invocación de línea de comando? ¿Cómo funcionan esos coqueteos? ¿Hay algún intercambio usando entrada estándar y salida estándar? ¿O no? En general, ¿por qué es esto necesario? Responda editando (cambiando) su respuesta, no aquí en los comentarios (**** sin que **** “Editar:”, “Actualizar:”, o similar – la respuesta debería aparecer como si hubiera sido escrita hoy).

    -Peter Mortensen

    el dia de ayer


¿Ha sido útil esta solución?