【问题标题】:fatal error: sqlite3.h: No such file or directory致命错误:sqlite3.h:没有这样的文件或目录
【发布时间】:2015-05-12 05:37:57
【问题描述】:

我正在尝试通过交叉编译为 Zynq 板(ARM 架构)构建 C 应用程序。当我在没有提及 ARM 拱门的情况下键入 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)

我做错了什么?感谢您为我提供的任何帮助。

【问题讨论】:

    标签: sqlite compilation makefile arm zynq


    【解决方案1】:

    我解决了这个问题

    $ sudo apt-get install libsqlite3-dev
    

    (debian 喘不过气来)

    【讨论】:

    • 太棒了!您的建议在 2 秒内解决了我的问题!非常感谢!
    • 在我的例子中(CentOS Linux 7),修复这个问题的命令略有不同:sudo yum install libsqlite3x-devel
    • 谢谢,这很有魅力。
    【解决方案2】:

    您没有提供足够的信息来确定:特别是,您没有说sqlite3.h 文件实际上在您的文件系统上的位置。但是,根据您所做的显示,我怀疑您需要将 INCLUDES 变量更改为:

    INCLUDES = lib/sqlite
    

    (或者将代码中的#include 更改为#include "sqlite/sqlite3.h")。这是假设头文件与sqlite3.c源文件在同一目录中。

    请注意,这是一个糟糕/令人困惑的实现。您应该将-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,而是... :)

    【讨论】:

    • 谢谢!我刚刚使用了#include "sqlite/sqlite3.h",它现在可以工作了! :)
    • 您好,感谢分享。就我而言,我修复了它运行apt-get install libsqlite3-dev。 (debian 喘不过气来)。 HTH 某人
    • @julianromera ,您的建议也对我有用。我认为你的答案是正确的。你应该把它写下来作为答案。
    • 由于我的建议解决了原作者的问题,这显然是正确的答案。从问题中的信息可以看出,作者正在使用本地安装的 sqlite,因此使用 apt-get 安装开发工具包不是他们想要的。其他人通过 apt-get 安装开发工具包解决了这个问题很好,但这是一个不同的问题,需要不同的解决方案。
    • 因为,正如我上面所说,发布问题的人已经安装了 libsqlite-3-dev ,所以下面的答案,虽然它会帮助其他一些有不同问题的人(他们没有'没有安装软件包),对这里提出的实际问题没有帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2018-03-05
    相关资源
    最近更新 更多