/ usr / bin / ld:找不到-lsqlite3.h

时间:2014-07-05 15:33:36

标签: c sqlite

我正在尝试在我的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

我想我必须将它添加到编译器中,尝试了很多方法,但它们都没有用。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

编译和链接C程序时:

  • -I/some/where/include选项用于指定找到标题(包含文件)的位置,
  • -L/some/where/lib选项用于指定库的位置,
  • -lname选项用于表示“与图书馆链接libname.solibname.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

相关问题