Hola colegas: A ver si alguien es tan amable de echarme un mano, que tengo el C muy olvidado. Tengo tres funciones C y quiero ponerlas en una librería. El primer paso creo que será compilarlas con el gcc y sacar los tres .o. Pero luego no tengo muy claro si hay que usar ar y cómo. No me aclaro mucho con el man. ¿Alguien me puede indicar brevemente cómo hacerlo?. Saludos, Vicente.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hola, Creo que con: ar qcs [libreria.a] [obj] [obj] [obj] ya está. La opción 's' es necesaria para que 'ar' construya el índice de la librería, que con 'q'uick append no se contruye. La 'c' es para que no se queje de que la librería no existe, así que si ya la tienes y quieres añadir objetos no la pongas. Aunque, ¿por qué compilar tres objetos para tres funciones? Con uno solo basta, ¿no? Y si las funciones no son demasiado grandes puedes permitirte enlazar ese objeto estáticamente al programa y olvidarte de librerias, etc. Pero vamos, que en realidad no tengo ni idea de lo que estás haciendo... ;-) Bueno, espero que eso te solucione el problema. Saludos. ________________ Miguel de Benito. http://8027.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE9xq9NnJqSUX19WSURAo7pAJ9Gu5v5MV4z/Sx4rE9xW/Ry72GyyACfVZqt kl34q7N1XW5gVur1YwCeQJc= =A6di -----END PGP SIGNATURE-----
Miguel de Benito wrote:
Aunque, ¿por qué compilar tres objetos para tres funciones? Con uno solo basta, ¿no? Y si las funciones no son demasiado grandes puedes permitirte enlazar ese objeto estáticamente al programa y olvidarte de librerias, etc. Pero vamos, que en realidad no tengo ni idea de lo que estás haciendo... ;-)
Bueno, yo no se como se porta el gcc a este respecto, pero si hay un motivo - esto me pasaba con el borlandc: cuando se linkaba un objeto, todas las funciones del mismo pasaban al ejecutable final. En cambio, si cada función estaba en un objeto distinto el binario resultaba más pequeño, porque no añadía aquellos objetos de los que no se usaba ninguna función. De hecho, al mirar el runtime se veía que estaba construido así, un fichero para cada función, o casi. -- Cheers, Carlos Robinson
Hola a todos.
Gracia a Miguel por su contestación.
Al final, he resuelto el tema haciendo una librería compartida con
"ld -shared".
Me hacía falta esto para poder invocar desde una función Oracle otra función
C que realiza cosas en el sistema operativo.
Saludos,
Vicente.
----- Mensaje original -----
De: "Carlos E. R"
Aunque, ¿por qué compilar tres objetos para tres funciones? Con uno solo basta, ¿no? Y si las funciones no son demasiado grandes puedes permitirte enlazar ese objeto estáticamente al programa y olvidarte de librerias,
etc.
Pero vamos, que en realidad no tengo ni idea de lo que estás haciendo... ;-)
Bueno, yo no se como se porta el gcc a este respecto, pero si hay un motivo - esto me pasaba con el borlandc: cuando se linkaba un objeto, todas las funciones del mismo pasaban al ejecutable final. En cambio, si cada función estaba en un objeto distinto el binario resultaba más pequeño, porque no añadía aquellos objetos de los que no se usaba ninguna función. De hecho, al mirar el runtime se veía que estaba construido así, un fichero para cada función, o casi. -- Cheers, Carlos Robinson -- Para dar de baja la suscripción, mande un mensaje a: suse-linux-s-unsubscribe@suse.com Para obtener el resto de direcciones-comando, mande un mensaje a: suse-linux-s-help@suse.com
participants (3)
-
Carlos E. R
-
Departamento Técnico
-
Miguel de Benito