Quantcast
Channel: Prisoner Number Six » Programming
Viewing all articles
Browse latest Browse all 10

Crear librerías dinámicas en Mac OSX

$
0
0

Compilando sqllite3 para Mac OSX sale un archivo objeto sqlite3.o. Con el podemos enlazarlo estáticamente con nuestro ejecutable:

bellucci:sqlite-autoconf-3070400 david$ gcc libsqlite3.o test.c -o test-stat

vemos con file:

bellucci:sqlite-autoconf-3070400 david$ file libsqlite3.o
libsqlite3.o: Mach-O 64-bit object x86_64

Ese libsqlite3.o lo podemos transformar en una librería dinámica con:

bellucci:sqlite-autoconf-3070400 david$ gcc -dynamiclib -o libsqlite3.dynlib libsqlite3.o

hacemos un file:

bellucci:sqlite-autoconf-3070400 david$ file libsqlite3.dylib
libsqlite3.dylib: Mach-O 64-bit dynamically linked shared library x86_64

Si queremos que explicitamente nuestro ejecutable compile con esa librería y no la que viene (a riesgo de que no sea compatible) con
el SDK de Mac:

bellucci:sqlite-autoconf-3070400 david$ gcc -L. -lsqlite3 test.c -o test-dyn

comprobamos:

bellucci:sqlite-autoconf-3070400 david$ otool -L test-dyn
test-dyn:
libsqlite3.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

Anteriormente, una simple compilación nos generaba un ejecutable enlazado dinámicamente con la sqlite3 del sistema y para ver la diferencia:

bellucci:sqlite-autoconf-3070400 david$ otool -L test
test:
/usr/lib/libsqlite3.dylib (compatibility version 9.0.0, current version 9.6.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)



Viewing all articles
Browse latest Browse all 10

Trending Articles