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

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 comstackr / ejecutar una aplicación?

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

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

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

Espero que esto ayude.

.a son bibliotecas estáticas. Si usa el código almacenado dentro de ellos, se los quita e incrusta en su propio binario. En Visual Studio, estos serían archivos .lib.

.so son bibliotecas dinámicas. Si usa el código almacenado dentro de ellos, no se toma ni se incrusta en su propio binario. En cambio, solo se hace referencia a él, por lo que el binario dependerá de ellos y el código del archivo so 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).

Los archivos .a generalmente son bibliotecas que se vinculan estáticamente (o archivos más precisos), y
.so son bibliotecas vinculadas dinámicamente.

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

Se usan en la etapa de vinculación. .a archivos están vinculados estáticamente, y los archivos .so están vinculados por orden, por lo que la biblioteca es necesaria siempre que ejecute el archivo ejecutable.

Puede encontrar dónde están almacenados mirando cualquiera de los directorios de lib … /usr/lib y /lib tienen la mayoría de ellos, y también está la variable de entorno LIBRARY_PATH .

Wikipedia es una fuente decente para esta información.

Para obtener información sobre archivos de biblioteca estáticos como .a, lee Static libarary

Para obtener información acerca de los archivos de bibliotecas compartidas, como .so read Library_ (computing) #Shared_libraries En esta página, también hay información útil en la sección de nombres de archivos .