星期六, 三月 22, 2014

Ubuntu 13.10 如何使用sqlite3 shared library。

1.下载最新代码www.sqlite.org
2.建立Makefile文件:
CFLAG= -fPIC -std=c99

libsqlite3.so:sqlite3.c
gcc $(CFLAG)     -shared -lpthread -c   -o libsqlite3.so sqlite3.c

all :  libsqlite3.so db.o pattern.o testPattern.o
gcc   -o test.exe db.o pattern.o testPattern.o libsqlite3.so -ldl -lpthread

开始编译时总是出现"undefined reference sqlite3_open",
当然有经验的自然知道是gcc link库的顺序的调整问题了。
所以开始使用-L. -lsqlite3 依然无法解决问题。
这头大了,最后发现关键在于,将两个-ldl -lpthread放在最后就可以解决问题。
可以理解,unix 下link的顺序同引用的函数次序相关,越是最基本或者
最底层的越要放在最后.
所以上述的最后编译命令修改为标准规范的well-formatted也是可以的
gcc   -o test.exe db.o pattern.o testPattern.o -L. -lsqlite3 -ldl -lpthread