我正在尝试用C(使用xcode)为PostgreSQL编写一个基本类型,并且我已经安装了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、13
这里有几种方法:
使用像
这样的命令自己搜索文件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
所以我将整个“server”文件夹移到“/include”内的目录中。还有viola、postgis完美编译安装。