sqlite链接错误

时间:2013-03-22 23:06:37

标签: sqlite ld

我与SQLite有一个奇怪的链接错误。我有以下代码:

void TestSQLiteTemp()
{
  /* sqlite3_initialize(); */
  sqlite3_close( db );
}

我可以编译和链接,一切都很好:

perdue@minervatest04> ldd bin/tests 
    libCAENVME.so => /usr/lib/libCAENVME.so (0x00002afaffc42000)
    ...
    libsqlite3.so.0 => /home/perdue/software/minervadaq/minervadaq/sqlite/lib/libsqlite3.so.0 (0x00002afafff8f000)
    ...

但是,如果我取消注释sqlite3_initialize行,则ld会失败:

g++  -o tests TestSuite.o -L/home/perdue/software/minervadaq/minervadaq/lib -lhardware -lminerva_workers -L/usr/lib64 -ldl -L/work/software/CAENVMElib/lib/x86_64 -lCAENVME -L/usr/local/lib -llog4cpp -L/usr/lib64 -lpthread  -L/usr/lib64  -L/home/perdue/software/minervadaq/minervadaq/sqlite/lib/ -lsqlite3
TestSuite.o: In function TestSQLiteTemp():
/home/perdue/software/minervadaq/minervadaq/tests/TestSuite.cpp:199: undefined reference to `sqlite3_initialize'

有谁知道为什么某些功能可能没问题,但其他功能无法链接?

1 个答案:

答案 0 :(得分:1)

要回答我自己的问题,问题是/ usr / lib64中有一个旧版本的sqlite,我在自定义安装区域之前出现在我的链接器列表中。如果我将自定义库区域移动到库路径列表的前面,一切正常。