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)
Image may be NSFW.
Clik here to view.

Clik here to view.
