无法链接到SQLite3静态库
问题描述:
我有一个静态库libsqlite3.a,我想链接到我的小程序。 我make文件如下图所示:无法链接到SQLite3静态库
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。
答
您必须始终将库放置在链接的文件之后。更改生成文件中的链接线为:
main : $(objects)
$(CPP) $(objects) -o main $(linked)
这应该有效。
+0
非常感谢你的工作。 – Amani 2012-02-09 09:57:19
答
您的链接参数不正确。 -L
用于指定目录(搜索路径)可找到库的位置。 -l
用于指定要链接到的库。
g++ -LC:/some/lib/path main.o -o main -lsqlite3
makefile和输出不匹配! – 2012-02-09 09:54:01