Actualmente estoy intentando portar una aplicación C al AIX y estoy confundido. ¿Qué son los archivos .a y .so y cómo se usan al compilar/ejecutar una aplicación?¿Qué son los archivos .a y .so?
Respuesta
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 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 -o opción en gcc. Por lo tanto, si hay algún cambio en el archivo .so, no necesita volver a compilar su programa principal. Pero asegúrese de que su programa principal esté vinculado al nuevo archivo .so con comando ln.
Esto lo ayudará a compilar 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).
.a Los archivos son generalmente 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.
¿Cómo construyo mi aplicación para usar archivos .so? – Dunc
Existen muchas referencias excelentes para construir ambos tipos de bibliotecas y vincularlas en la web. Google es tu amigo. –
@Dunc - Hay un par de maneras.¿Tienes un archivo MAKE? Por lo general, el comando que ensambla todo el programa (y por lo tanto llama al enlazador) especificará los lugares para buscar los archivos de la biblioteca con -L/dir/dir1 /.../ y también puede nombrar bibliotecas explícitamente con -lname. Descubrirá que el nombre real es libname.a o libname.so. El vinculador puede entonces decidir qué hacer si este es un programa razonablemente normal. Pero todavía tiene el problema de crear o encontrar el archivo .so. ¿Tiene el código fuente para construirlo, o una biblioteca de AIX? – gbulmer
Se utilizan en la etapa de enlace. Los archivos .a
están vinculados estáticamente y los archivos .so
están vinculados por tipo, de modo que la biblioteca es necesaria siempre que ejecuta el archivo ejecutable.
Puede encontrar dónde están almacenados mirando cualquiera de los directorios 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 aprender acerca de los archivos de biblioteca estática como .a leer Static libarary
Para obtener información sobre los archivos de bibliotecas compartidas gusta leer .so Library_(computing)#Shared_libraries En esta página, también hay información útil en el Nombre de archivo sección.
- 1. ¿Cuál es la diferencia entre los archivos .so y .a?
- 2. diferencia entre archivos .so.0 y .so.0.0.0
- 3. ¿Qué son los archivos .sln y .vcproj, y qué contienen?
- 4. ¿Qué son los archivos NDF?
- 5. ¿Qué son los archivos .S?
- 6. ¿Qué son los archivos VSSVER.SCC y puedo eliminarlos?
- 7. ¿Qué son los archivos ODEX en Android?
- 8. ¿Qué son los archivos derivados en Eclipse?
- 9. Cargando * .so archivos en Websphere
- 10. ¿Qué son los archivos * .snap en eclipse?
- 11. ¿Qué son los archivos swz en Flash?
- 12. ¿Qué son los archivos .idb de MonoDevelop?
- 13. XFL - ¿Qué son los archivos ./bin/*.dat?
- 14. ELF: linking: ¿Por qué obtengo referencias indefinidas en .so archivos
- 15. cómo crear archivos binarios y .so usando libtool
- 16. archivos de enlace (.a) en objeto compartido (.so)
- 17. ¿Qué son los operadores levantados?
- 18. ¿Qué son los operadores bit a bit?
- 19. ¿Qué son los modificadores transitorios y volátiles? -
- 20. ¿Qué son los sombreadores Vertex y Pixel?
- 21. Cargando .so archivos de la memoria
- 22. qué devuelve System.getProperty ("os.name") en los últimos SO de Windows
- 23. ¿Qué son los archivos .datasource de Referencia de servicio WCF?
- 24. ¿Por qué los "Archivos de programa" son dos palabras?
- 25. ¿Qué formatos de archivos gráficos son compatibles con los navegadores?
- 26. ¿Qué idioma son los archivos conf de nginx?
- 27. ¿Para qué son los archivos js adicionales del framework Angular.js?
- 28. Crear un SDK (archivo jar individual) con archivos "so"
- 29. git ¿Qué son los archivos sin seguimiento en un repositorio?
- 30. ¿Qué tan portátiles son los archivos de haz Erlang?
uno es library 'a'rchive y otro es 's'hared' o'bject –
Posible duplicado de * [¿Cuál es la diferencia entre .so, .la y .a archivos de biblioteca?] (Https: // stackoverflow. com/questions/12237282/whats-the-difference-between-so-la-and-a-library-files) *. –