c unix compilation shared-libraries .a

¿Qué son los archivos.a y.so?



unix compilation (5)

.a son bibliotecas estáticas. Si utiliza el código almacenado dentro de ellos, se toma de ellos y se integra en su propio binario. En Visual Studio, estos serían archivos .lib.

.as son las librerias dinamicas. Si utiliza el código almacenado dentro de ellos, no se toma e integra en su propio binario. En su lugar, solo se hace referencia, por lo que el binario dependerá de ellos y el código del archivo se agregará / cargará en tiempo de ejecución. En Visual Studio / Windows, estos serían archivos .dll (con pequeños archivos .lib que contienen información de enlace).

Actualmente estoy tratando de portar una aplicación C a AIX y me estoy confundiendo. ¿Qué son los archivos .a y .so y cómo se usan al crear / ejecutar una aplicación?


Las bibliotecas de archivos (.a) están vinculadas estáticamente, es decir, cuando compila su programa con la opción -c en gcc. Entonces, si hay algún cambio en la biblioteca, necesita compilar y construir su código nuevamente.

La ventaja de .so (objeto compartido) sobre la biblioteca .a es que están vinculados durante el tiempo de ejecución, es decir, después de la creación de su archivo .o -o opción en gcc. Por lo tanto, si hay algún cambio en el archivo .so, no es necesario que vuelva a compilar su programa principal. Pero asegúrese de que su programa principal esté vinculado al nuevo archivo .so con el comando ln.

Esto te ayudará a construir los archivos .so. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

Espero que esto ayude.


Los archivos .a suelen ser bibliotecas que se vinculan estáticamente (o archivos con mayor precisión), y
.so son bibliotecas enlazadas dinámicamente.

Para hacer un puerto, necesitará el código fuente que se compiló para hacerlos, o archivos equivalentes en su máquina AIX.


Se utilizan en la etapa de vinculación. .a archivos .a están vinculados estáticamente, y los archivos .so están vinculados en cierto modo, por lo que la biblioteca es necesaria cada vez que ejecutas el exe.

Puede encontrar dónde se almacenan al mirar cualquiera de los directorios de lib ... /usr/lib y /lib tienen la mayoría de ellos, y también LIBRARY_PATH la variable de entorno LIBRARY_PATH .