Makefile 错误:/usr/bin/ld: 找不到 -lsqlite3

Posted

技术标签:

【中文标题】Makefile 错误:/usr/bin/ld: 找不到 -lsqlite3【英文标题】:Makefile error: /usr/bin/ld: cannot find -lsqlite3 【发布时间】:2017-01-29 22:08:10 【问题描述】:

我已经在 Linux 上从源代码安装了sqlite3,并将其放入带有 Makefile 的 C 代码的子目录中。这就是Makefile 的样子

CC      = gcc
CFLAGS  = -Wall -g -std=c99

SOURCES := src/file1.c src/file2.c src/file3.c
LIB     := -lm -lsqlite3 
INC     := -I include -I path/to/pathname/sqlite3/include 

all:
    @mkdir -p bin/

    $(CC) $(CFLAGS) $(SOURCES) main.c  -L path/to/pathname/sqlite3/ -o bin/software $(LIB) $(INC)

clean:
    rm -f bin/sofware

但是,每当我尝试执行 make 时,我都会收到此错误:

gcc -Wall -g -std=c99 src/file1.c src/file2.c src/file3.c -I include -I path/to/pathname/sqlite3/include 
/usr/bin/ld: cannot find -lsqlite3
collect2: error: ld returned 1 exit status
make: *** [all] Error 1

我不明白。 sqlite3path/to/pathname/sqlite3/

这是path/to/pathname/sqlite3/ 中的文件/可执行文件列表:

aclocal.m4      config.log     configure.ac  install-sh     ltmain.sh    missing  shell.o       sqlite3.h   sqlite3.pc.in
autom4te.cache  config.status  depcomp       lib            Makefile     README   sqlite3       sqlite3.lo  tea
bin             config.sub     include       libsqlite3.la  Makefile.am  share    sqlite3.c     sqlite3.o
config.guess    configure      INSTALL       libtool        Makefile.in  shell.c  sqlite3ext.h  sqlite3.pc

如何正确地允许此 C 代码在访问 sqlite3 的情况下正确编译?

【问题讨论】:

LDFLAGS = -Lpath/to/pathname/sqlite3/lib(假设lib 是库二进制文件实际所在的位置)。 另外,您提供的信息有些不妥。 makefile 说main.c 应该包含在构建命令行中。但它没有显示在您的输出中。 gcc 行也不显示 -lsqlite3。不确定那里是否有问题或者您粘贴了错误的输出。 【参考方案1】:

你需要添加 -L/path/to/lib/dir

【讨论】:

以上是关于Makefile 错误:/usr/bin/ld: 找不到 -lsqlite3的主要内容,如果未能解决你的问题,请参考以下文章

编译错误 /usr/bin/ld: 无法打开输出文件 bin/server: 没有这样的文件或目录

/usr/bin/ld: 无法打开输出文件 bin/genericMatching: 没有这样的文件或目录

/usr/bin/ld: 找不到:没有这样的文件或目录

gcc 错误“/usr/bin/ld: 找不到 -lstdc++”

编译错误:/ usr / bin / ld:找不到-lclntsh

/usr/bin/ld: cannot find -lz