无法链接到SQLite3静态库

时间:2012-02-09 09:36:11

标签: c++ sqlite gcc linker makefile

我有一个静态库libsqlite3.a,我想链接到我的小程序。 我的make文件如下所示:

CPP = g++

sources = main.cpp
objects = main.o

included = -IC:/SQLite-lib/include
linked = -LC:/SQLite-lib/ -lsqlite3

main : $(objects)
    $(CPP) $(linked) $(objects) -o main

main.o : $(sources)
    $(CPP) $(included) -c main.cpp

我不断收到此类错误消息:

g++ -LC:/SQLite-lib/libsqlite3.a main.o -o main
main.o:main.cpp:(.text+0x42): undefined reference to `sqlite3_open'
main.o:main.cpp:(.text+0x7d): undefined reference to `sqlite3_close'
main.o:main.cpp:(.text+0xe7): undefined reference to `sqlite3_close'
collect2: ld returned 1 exit status
make: *** [main] Error 1

我做错了什么?我使用Win XP SP3,GCC 4.6.2。

2 个答案:

答案 0 :(得分:3)

您必须始终在您链接的文件后放置库。将makefile中的链接行更改为:

main : $(objects)
    $(CPP) $(objects) -o main $(linked)

这应该有效。

答案 1 :(得分:0)

您的链接参数不正确。 -L用于指定可以找到库的目录(搜索路径)。 -l用于指定要链接的库。

g++ -LC:/some/lib/path main.o -o main -lsqlite3