如何修复“postgres.h”文件未找到问题?

问题描述 投票:0回答:3

我正在尝试用C(使用xcode)为PostgreSQL编写一个基本类型,并且我已经安装了PostgreSQL 11,但似乎

postgres.h
不能简单地包含在文件中(“'postgres.h'文件未找到”) ).

有人可以告诉我如何解决这个问题吗?还有我可以在任意目录下编写代码吗,还是必须在PostgreSQL目录下编写?

或者也许问题应该是:如何安装像

postgres.h
这样的头文件?

c postgresql postgresql-11
3个回答
62
投票

使用以下命令安装 postgresql-server-dev 包:

sudo apt install postgresql-server-dev-XX

将 [XX] 替换为您已安装的 PostgreSQL 版本:9.5、10、11、12、13


4
投票

这里有几种方法:

  • 使用像

    这样的命令自己搜索文件
    find / -name "postgres.h" -print
    

    这会告诉您(在我的 Mac 上)该文件位于:

    /usr/local/Cellar/postgresql/11.2_1/include/server/postgres.h
    

    并将

    -I /usr/local/Cellar/postgresql/11.2_1/include/server
    选项添加到编译器中。检查您的 postgresql 版本是否有可能使用不同的版本。

  • 可能还有另一个用于数据库开发的包。搜索名为

    postgresql-dev
    或类似名称的软件包,然后安装它。搜索包后:

     brew search postgres 
    

     brew search psql
    

    在我的系统上没有出现任何匹配的内容。

编辑

我检查了 FreeBSD 系统中是否有该文件,它出现在

/usr/local/include/postgresql/server/postgres.h

因此,您可能必须改为

#include <server/postgres.h>
,并使用适当的
-I
标志(如上所述)


3
投票

我在 Mac 上为 postgresql@13 编译 postgis 3.1.7 时遇到了同样的问题。 问题是 pg_config 中服务器文件的链接是

/opt/homebrew/opt/postgresql@13/include/server

虽然实际的服务器文件夹位于

/opt/homebrew/opt/postgresql@13/include/postgresql/server

所以我将整个“server”文件夹移到“/include”内的目录中。还有viola、postgis完美编译安装。

© www.soinside.com 2019 - 2024. All rights reserved.