Centos 下c++ 编译程序时包含sqlite3的错误:
[root@centos dscluster]# make dscluster
g++ -g -o dscluster dscluster.cpp -L/app/dscluster -ldspublic -L/app/dscluster -lrdbrelative -std=c++11
/usr/bin/ld: /tmp/cce8fLra.o: undefined reference to symbol 'sqlite3_open'
/usr/local/lib/libsqlite3.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [dscluster] Error 1
前面的librdbrelative.so编译没有错误。
[root@centos dscluster]# ldd librdbrelative.so
linux-vdso.so.1 => (0x00007ffc974e4000)
libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x00007f46b5215000)
libmysqlclient.so.21 => /usr/lib64/libmysqlclient.so.21 (0x00007f46b4b0a000)
libocci.so.11.1 => /app/oracle/product/11.2.0/db_1/lib/libocci.so.11.1 (0x00007f46b47b2000)
libclntsh.so.11.1 => /app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1 (0x00007f46b1d48000)
libnnz11.so => /app/oracle/product/11.2.0/db_1/lib/libnnz11.so (0x00007f46b197b000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f46b15ae000)
......
centos自带sqlite 3.7,其共享库位于/usr/lib64. 而我通过下载安装了sqlite 3.44.2,位于 libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x00007f46b5215000)。是什么问题呢?gcc 4.8.5 版本太低了?两个版本sqlite3冲突?