我正在尝试用C语言为PostgreSQL编写一个基本类型(使用xcode(,并且我已经安装了PostgreSQL 11,但似乎postgres.h
不能简单地包含在文件中("找不到'postgres.h'文件"(。
有人可以告诉我如何解决这个问题吗?我可以在任意目录下编写代码,还是必须在PostgreSQL目录下编写代码?
或者也许问题应该是:如何安装像postgres.h
这样的头文件?
使用以下命令安装 postgresql-server-dev 包:
sudo apt install postgresql-server-dev-XX
将 [XX] 替换为已安装的 postgresql:9.5, 10, 11, 12 版本
这里有几种方法:
-
自己搜索文件,使用一些命令,如
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
标志(如上所述(
我在Mac上为postgresql@13编译postgis 3.1.7时遇到了同样的问题。问题是在pg_config中指向服务器文件的链接是
/opt/homebrew/opt/postgresql@13/include/server
当实际服务器文件夹位于
/opt/homebrew/opt/postgresql@13/include/postgresql/server
所以我将整个"服务器"文件夹移到了"/include"中的一个目录中。和中提琴,邮政吉斯编译和安装完美。