Actualmente estoy tratando de portar una aplicación C a AIX y me estoy confundiendo. ¿Qué son los archivos .ay .so y cómo se utilizan al crear / ejecutar una aplicación?
c
unix
compilation
shared-libraries
.a
Dunc
fuente
fuente
a
archivo de la biblioteca y el otro ess
objetoo
ocultoRespuestas:
Las bibliotecas de archivo (.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 .a 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. Entonces, si hay algún cambio en el archivo .so, no necesita recompilar 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.
fuente
pic
(código de posición independiente)?.a son bibliotecas estáticas. Si usa el código almacenado dentro de ellos, se toma de ellos y se incrusta en su propio binario. En Visual Studio, estos serían archivos .lib.
.so son bibliotecas dinámicas. Si usa código almacenado dentro de ellos, no se toma e incrusta en su propio binario. En cambio, 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).
fuente
.lib
archivo pequeño para.dll
se llama biblioteca de importación.Los archivos .a suelen ser bibliotecas que se vinculan estáticamente (o archivos más precisos), y
.so son bibliotecas vinculadas dinámicamente.
Para hacer un puerto necesitará el código fuente que se compiló para hacerlos, o archivos equivalentes en su máquina AIX.
fuente
Se utilizan en la etapa de vinculación.
.a
los archivos están vinculados estáticamente y los.so
archivos están vinculados, de modo que la biblioteca es necesaria siempre que ejecute el exe.Puede encontrar dónde están almacenados mirando cualquiera de los directorios lib ...
/usr/lib
y/lib
tener la mayoría de ellos, y también existe laLIBRARY_PATH
variable de entorno.fuente
Wikipedia es una fuente decente para esta información.
Para obtener información sobre archivos de biblioteca estáticos como .a, lea la biblioteca estática
Para obtener información sobre archivos de biblioteca compartidos como .so lea Library_ (informática) #Shared_libraries En esta página, también hay información útil en la sección de nombres de archivos .
fuente