¿Dónde almacena Ubuntu sus archivos de biblioteca?

17

Quiero agregar mi propia biblioteca para usar en la compilación de c, pero realmente no sé dónde ubuntu la almacena.

david25
fuente
55
Se almacena en / usr / lib & / usr / include
karthick87
encontré mi biblioteca en / usr / include ¿cómo debo ir con ponerlos? ¿Debo poner un archivo de encabezado y un archivo ac cerca de él o debería escribir el encabezado y la función juntos en un archivo .h?
david25
3
Las bibliotecas y los encabezados son cosas diferentes, / usr / include NO contiene bibliotecas, contiene encabezados que son definiciones de funciones / objetos disponibles en las bibliotecas. La pregunta debería mejorarse, es difícil entender qué estás tratando de lograr.
João Pinto

Respuestas:

11

Según sus comentarios a su pregunta, creo que lo que realmente está preguntando es "¿Cómo instalo una biblioteca personalizada que escribí y dónde debo colocarla?"

En general, las cosas construidas localmente para otros usuarios en la máquina para el usuario se colocan en el árbol / usr / local. El archivo de encabezado debe ir a / usr / local / include. La biblioteca compilada debe ir a / usr / local / lib. El archivo .c no es parte de la biblioteca, es parte de la fuente y no es algo que normalmente no está instalado para el uso del usuario final. Necesitará acceso de root para colocar archivos en cualquiera de estas ubicaciones.

Para compilar la biblioteca, primero deberá compilar si desea una biblioteca estática o dinámica (compartida). Puede encontrar más información sobre cómo crear una biblioteca compartida en la sección 3.4, Creación de una biblioteca compartida en http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html . (También tienen recomendaciones sobre dónde colocar las cosas; la mayoría de los desarrolladores tendrán una opinión o tres :-))

jwernerny
fuente
11

Dependiendo de la biblioteca, ubuntu almacena sus bibliotecas principalmente en tres ubicaciones

  1. / lib
  2. / usr / lib
  3. / usr / local / lib

Lo siguiente es del Estándar de Jerarquía del Sistema de Archivos

/ lib

El directorio / lib contiene las imágenes de la biblioteca compartida necesarias para iniciar el sistema y ejecutar los comandos en el sistema de archivos raíz, es decir. por binarios en / bin y / sbin.

/ usr / lib

/ usr / lib incluye archivos de objetos, bibliotecas y archivos binarios internos que no están destinados a ser ejecutados directamente por usuarios o scripts de shell. [22]

Las aplicaciones pueden usar un solo subdirectorio en / usr / lib. Si una aplicación usa un subdirectorio, todos los datos dependientes de la arquitectura utilizados exclusivamente por la aplicación deben colocarse dentro de ese subdirectorio.

/ usr / local / lib contiene bibliotecas locales, es decir, una específica para este sistema, pero no puedo encontrar referencias a / usr / local / lib en FHS, solo contiene una explicación para / usr / local.

binW
fuente
0

Debes decirle al compilador dónde puede encontrar tu biblioteca. Supongamos que la ruta a su biblioteca es "/path/to/lib/libfoo.a", podría compilar y vincular su programa "hello.c" de esta manera:

gcc -L/path/to/lib -lfoo hello.c

Esto no es específico de Ubuntu, en realidad todos los compiladores de C que conozco admiten esos indicadores.

Franco
fuente
-2

En Ubuntu se encuentran en /usr/include.

Evanson Wachira Wang'ombe
fuente
1
Los archivos de encabezado están adentro/usr/include. Los binarios reales para una biblioteca no se almacenan allí. Los encabezados pueden considerarse parte de una biblioteca, pero deben instalarse por separado y se usan para compilar programas que usan una biblioteca. Una vez que se ha compilado un programa que usa una biblioteca, ya no necesita ni usa los archivos de encabezado.
Eliah Kagan