【发布时间】: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
我不明白。 sqlite3 在path/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。不确定那里是否有问题或者您粘贴了错误的输出。