我正在尝试在我的Eclipse C项目中使用sqlite3,我已经添加了sqlite3.h及其地址:/ usr / include /到链接器,但仍然收到此错误消息:
make all
Building target: SQLiteTest
Invoking: GCC C Linker
gcc -L/usr/include/ -o "SQLiteTest" ./hello.o -lsqlite3.h
/usr/bin/ld: cannot find -lsqlite3.h
collect2: error: ld returned 1 exit status
make: *** [SQLiteTest] Error 1
我想我必须将它添加到编译器中,尝试了很多方法,但它们都没有用。
感谢您的帮助
答案 0 :(得分:1)
编译和链接C程序时:
-I/some/where/include
选项用于指定找到标题(包含文件)的位置,-L/some/where/lib
选项用于指定库的位置,-lname
选项用于表示“与图书馆链接libname.so
或libname.a
”图书馆的后缀因平台而异 - 选择.sl
,.sa
,.dll
,.lib
,.dylib
,.bundle
,名称,但一些替代扩展名。
-L/usr/include
选项不太可能正确。标题存储在/usr/include
中,而不是库中。将其更改为-I/usr/include
是不必要的;无论如何,编译器将在/usr/include
中搜索。如果sqlite3.h
标题位于/usr/include
中,则会在没有选项的情况下找到它。如果它在其他地方,例如/usr/local/include
或/opt/sqlite3/include
,那么您可能需要在命令行上指定-I/usr/local/include
或-I/opt/sqlite3/include
。在每种情况下,您可能还需要-L/usr/local/lib
或-L/opt/sqlite3/lib
。 (请注意,您的编译器可能会,但可能不会自动搜索/usr/local
。)
如评论中所述,您不会在命令行中指定-lsqlite3.h
。这意味着你的系统上某处有一个像libsqlite3.h.so
这样的库,这是一个难以置信的名字。最有可能的是,您应该在链接命令行上指定-lsqlite3
。