Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix 'postgres.h' file not found problem?

I am trying to write a base type for PostgreSQL in C (using xcode), and I already installed PostgreSQL 11, but it seems that postgres.h cannot be simply included in the file ("'postgres.h' file not found").

Could someone tell me how to fix that problem? And can I write code under an arbitary directory, or do I have to write under the PostgreSQL directory?

Or perhaps the question should be: how to install header files like postgres.h?

like image 370
Jasper Zhou Avatar asked Jun 23 '19 14:06

Jasper Zhou


2 Answers

Install postgresql-server-dev package with this command:

sudo apt install postgresql-server-dev-XX

Replace [XX] with your already installed version of postgresql:9.5, 10, 11, 12

like image 97
Nuzhat Ansari Avatar answered Sep 21 '22 19:09

Nuzhat Ansari


You have several approaches here:

  • Search for the file yourself, using some command like

    find / -name "postgres.h" -print
    

    this will tell you (on my Mac does) the file is in:

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

    and add the -I /usr/local/Cellar/postgresql/11.2_1/include/server option to the compiler. Check your postgresql version for the possibility of having a different one.

  • Probably there's another package for database development. Search for a package named postgresql-dev or similar, and install it. After searching packages with:

     brew search postgres 
    

    and

     brew search psql
    

    on my system doesn't appear anything that matches.

EDIT

I've checked a FreeBSD system for that file and it appears on

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

So probably you have to #include <server/postgres.h> instead, and use the appropiate -I flag (as mentioned above)

like image 34
Luis Colorado Avatar answered Sep 22 '22 19:09

Luis Colorado