fatal error: sqlite3.h: No such file or directory
fatal error: sqlite3.h: No such file or directory
我正在尝试通过交叉编译为 Zynq 板(ARM 架构)构建 C 应用程序。当我在不提及 ARM arch 的情况下键入 make 时,它在我的笔记本电脑上运行良好。但是一旦我修改了 Makefile,我就会收到一条错误消息:
main.c:20:43: fatal error: sqlite3.h: No such file or directory
#include "sqlite3.h" //library for sqlite3
^
compilation terminated.
make: *** [ws_temp_server] Error 1
Makefile 如下所示:
SOURCE=lib/base64_enc.c lib/websocket.c lib/sha1.c lib/sqlite/sqlite3.c main.c
CC = arm-xilinx-linux-gnueabi-gcc
LDFLAGS=-lpthread -ldl
INCLUDES=lib/
PROGRAM=ws_temp_server
all: $(PROGRAM)
$(PROGRAM): $(SOURCE)
$(CC) $(SOURCE) -I$(INCLUDES) -o$(PROGRAM) $(LDFLAGS)
clean:
rm $(PROGRAM)
我做错了什么?感谢我能得到的任何帮助。
您没有提供足够的信息来确定:特别是,您没有说明 sqlite3.h
文件在您的文件系统中的实际位置。但是,根据您所展示的内容,我怀疑您需要将 INCLUDES
变量更改为:
INCLUDES = lib/sqlite
(或者将代码中的 #include
更改为 #include "sqlite/sqlite3.h"
)。这是假设头文件与 sqlite3.c
源文件位于同一目录中。
请注意,这是一个 bad/confusing 实现。您应该将 -I
标志放在 INCLUDES
变量中:
INCLUDES = -Ilib/sqlite
...
$(PROGRAM): $(SOURCE)
$(CC) $(SOURCE) $(INCLUDES) -o$(PROGRAM) $(LDFLAGS)
INCLUDES
是复数形式,这可能会让某些人相信他们可以在该变量中添加多个目录,但如果你按原样保留它,这将导致奇怪的编译器错误:
INCLUDES = lib/sqlite another/dir
...
$(PROGRAM): $(SOURCE)
$(CC) $(SOURCE) -I$(INCLUDES) -o$(PROGRAM) $(LDFLAGS)
将添加标志 -Ilib/sqlite another/dir
...请注意第二个目录没有 -I
选项。
当然,按照惯例,您应该使用 CPPFLAGS
(用于 C 预处理器标志),而不是 INCLUDES
,但是...:)
我用
解决了这个问题
$ sudo apt-get install libsqlite3-dev
(debian 气喘吁吁)
我正在尝试通过交叉编译为 Zynq 板(ARM 架构)构建 C 应用程序。当我在不提及 ARM arch 的情况下键入 make 时,它在我的笔记本电脑上运行良好。但是一旦我修改了 Makefile,我就会收到一条错误消息:
main.c:20:43: fatal error: sqlite3.h: No such file or directory
#include "sqlite3.h" //library for sqlite3
^
compilation terminated.
make: *** [ws_temp_server] Error 1
Makefile 如下所示:
SOURCE=lib/base64_enc.c lib/websocket.c lib/sha1.c lib/sqlite/sqlite3.c main.c
CC = arm-xilinx-linux-gnueabi-gcc
LDFLAGS=-lpthread -ldl
INCLUDES=lib/
PROGRAM=ws_temp_server
all: $(PROGRAM)
$(PROGRAM): $(SOURCE)
$(CC) $(SOURCE) -I$(INCLUDES) -o$(PROGRAM) $(LDFLAGS)
clean:
rm $(PROGRAM)
我做错了什么?感谢我能得到的任何帮助。
您没有提供足够的信息来确定:特别是,您没有说明 sqlite3.h
文件在您的文件系统中的实际位置。但是,根据您所展示的内容,我怀疑您需要将 INCLUDES
变量更改为:
INCLUDES = lib/sqlite
(或者将代码中的 #include
更改为 #include "sqlite/sqlite3.h"
)。这是假设头文件与 sqlite3.c
源文件位于同一目录中。
请注意,这是一个 bad/confusing 实现。您应该将 -I
标志放在 INCLUDES
变量中:
INCLUDES = -Ilib/sqlite
...
$(PROGRAM): $(SOURCE)
$(CC) $(SOURCE) $(INCLUDES) -o$(PROGRAM) $(LDFLAGS)
INCLUDES
是复数形式,这可能会让某些人相信他们可以在该变量中添加多个目录,但如果你按原样保留它,这将导致奇怪的编译器错误:
INCLUDES = lib/sqlite another/dir
...
$(PROGRAM): $(SOURCE)
$(CC) $(SOURCE) -I$(INCLUDES) -o$(PROGRAM) $(LDFLAGS)
将添加标志 -Ilib/sqlite another/dir
...请注意第二个目录没有 -I
选项。
当然,按照惯例,您应该使用 CPPFLAGS
(用于 C 预处理器标志),而不是 INCLUDES
,但是...:)
我用
解决了这个问题$ sudo apt-get install libsqlite3-dev
(debian 气喘吁吁)