2011-05-08 23 views
19

En el manual de gcc se da que "la propia biblioteca estándar de C se almacena en‘/usr/lib/libc.a’". Tengo gcc instalado, pero no pude encontrar libc.a en dicha ubicación. Curioso saber dónde está ubicado.Localización de C biblioteca estándar

encuentro muchas .so archivos en lugar lib/usr /. ¿Que son esos?

+0

¿Usted intentó preguntar a su gestor de paquetes? –

+0

¿qué tal libc.so? – Mayank

+0

¿En qué sistema operativo? –

Respuesta

17

algunas cosas:

  • gcc y glibc son dos cosas diferentes. gcc es el compilador, glibc son las bibliotecas de tiempo de ejecución. Casi todo necesita glibc para funcionar.
  • .a archivos son librerías estáticas, .so significa objeto compartido y es el equivalente Linux de una DLL
  • La mayoría de las cosas no estan enlazadas a libc.a, vinculan contra libc.so

la esperanza de que se borra para usted. En cuanto a la ubicación, es casi seguro que va a estar en /usr/lib/libc.a y/o /usr/lib/libc.so. Como dije, el .so uno es el más común.

+0

¿Está libc.so vinculado dinámicamente y libc.a está vinculado estáticamente? – devnull

+7

libc.so y libc.a ambos proporcionan la misma funcionalidad. La diferencia es que si enlaza con libc.so, cada vez que se actualice libc.so, su programa obtendrá el beneficio de la actualización sin cambios. Sin embargo, si enlaza con libc.a, toda la funcionalidad está empaquetada en su programa. Las nuevas actualizaciones de libc no actualizarán su programa, por lo que tendrá que volver a compilarse. –

+2

Entonces sí, .so es el enlace dinámico, y .a es el vinculado estáticamente. –

2

en CentOS 5.8

$ ls -l /usr/lib/libc.a 
-rw-r--r-- 1 root root 2442786 Apr 8 2010 /usr/lib/libc.a 

$ rpm -qf /usr/lib/libc.a 
glibc-devel-2.3.4-2.43.el4_8.3 

También hay que tener el paquete glibc-devel instalar bajo distribuciones RedHat.

3

Si está en Linux (rpm), obtendrá la ubicación del glibc instalado con rpm -ql glibc y rpm -ql glibc-devel.

locate libc.a le conseguiría la ubicación. Y para ver de dónde viene hacer: rpm -qf /usr/lib/libc.a

Esto es lo que rpm -qi tiene que decir acerca de estos paquetes

glibc-devel:

El paquete glibc-devel contiene el objeto archivos necesarios para desarrollar programas que usen las bibliotecas C estándar (que son utilizadas por casi todos los programas). Si está desarrollando programas que usará las librerías de C estándar, el sistema tiene que tener estos ficheros objeto estándar disponibles con el fin de crear las ejecutables. Instalar glibc-devel si se va a desarrollar programas que utilizar las bibliotecas estándar de C

glibc:

El paquete glibc contiene librerías estándar que son utilizados por múltiples programas en el sistema . Con el fin de ahorrar espacio en disco y memoria, así como para la actualización sea más fácil, el código del sistema común es mantenerse en un lugar y compartieron entre los programas. Este paquete en particular contiene los conjuntos más importantes de las bibliotecas compartidas: la biblioteca estándar de C y la biblioteca matemática estándar. Sin estas dos bibliotecas, un sistema Linux no funcionará.

2

Es necesario instalar el paquete de librerías estáticas por separado: glibc-static.i686

10

Si está buscando libc.a:

$ gcc --print-file-name=libc.a 
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libc.a 
+0

Gracias estuve tratando de encontrarlo por mucho tiempo en/usr pero no pude encontrar. Tu comando ayudó mucho. –

Cuestiones relacionadas