Re: Compiling C Extension Functions against PostgreSQL 12 - Mailing list pgsql-general

From TalGloz
Subject Re: Compiling C Extension Functions against PostgreSQL 12
Date
Msg-id 1588448354769-0.post@n3.nabble.com
Whole thread Raw
In response to Re: Compiling C Extension Functions against PostgreSQL 12  (Adrian Klaver <adrian.klaver@aklaver.com>)
Responses Re: Compiling C Extension Functions against PostgreSQL 12  (Adrian Klaver <adrian.klaver@aklaver.com>)
List pgsql-general
Adrian Klaver-4 wrote
> On 5/2/20 12:28 PM, TalGloz wrote:
>> I'm trying to upgrade from PostgreSQL 10 to 12 and I need to compile all
>> my
>> manually created C extension functions against PostrgreSQL 12 before
>> starting the upgrade process. I have this Makefile that compiles
>> perfectly
>> the seal_diff_cpp.cpp C extension function against PostgreSQL 10:
>> 
>> MODULES = seal_diff_cpp
>> PG_CONFIG = /usr/pgsql-10/bin/pg_config
>> PGXS = $(shell $(PG_CONFIG) --pgxs)
>> INCLUDEDIR = $(shell $(PG_CONFIG) --includedir-server)
>> INCLUDE_SEAL = /usr/local/include
>> INCLUDE_SEAL_LIB = /usr/local/lib
>> INCLUDE_CPPCODEC = /usr/local/include/cppcodec
>> CXX = g++
>> CXXFLAGS = -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread \
>>             -I$(INCLUDEDIR) -I$(INCLUDE_SEAL) -I$(INCLUDE_CPPCODEC)
>> SEAL_LDFLAGS = -L$(INCLUDE_SEAL_LIB) -lseal -pthread
>> include $(PGXS)
>> seal_diff_cpp.so: seal_diff_cpp.o
>> #       $(CXX) -Wl,--no-undefined -shared -o seal_diff_cpp.so
>> seal_diff_cpp.o $(LDFLAGS) $(SEAL_LDFLAGS)
>>          $(CXX) -shared -o seal_diff_cpp.so seal_diff_cpp.o $(LDFLAGS)
>> $(SEAL_LDFLAGS)
>> seal_diff_cpp.o: seal_diff_cpp.cpp
>>           $(CXX) $(CXXFLAGS) -o seal_diff_cpp.o -c seal_diff_cpp.cpp
>> 
>> When I execute it the output looks like this:
>> 
>> g++ -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread
>> -I/usr/pgsql-10/include/server -I/usr/local/include
>> -I/usr/local/include/cppcodec -o seal_diff_cpp.o -c seal_diff_cpp.cpp
>> g++ -shared -o seal_diff_cpp.so seal_diff_cpp.o -L/usr/pgsql-10/lib
>> -L/usr/lib64 -Wl,--as-needed
>> -Wl,-rpath,'/usr/pgsql-10/lib',--enable-new-dtags -L/usr/local/lib -lseal
>> -pthread
>> 
>> And the seal_diff_cpp.so gets created without any problems. But when I
>> use
>> PG_CONFIG = /usr/pgsql-12/bin/pg_config I get:
>> 
>> g++ -Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute
>> -Wformat-security -fno-strict-aliasing -fwrapv -O2 -o seal_diff_cpp.o -c
>> seal_diff_cpp.cpp
>> seal_diff_cpp.cpp:2:10: fatal error: postgres.h: No such file or
>> directory
>>      2 | #include 
> <postgres.h>
>>        |          ^~~~~~~~~~~~
>> compilation terminated.
>> make: *** [Makefile:19: seal_diff_cpp.o] Error 1
>> 
>> The Makefile has all the needed information to compile the
>> seal_diff_cpp.so
>> against PostgreSQL 12:
>> /usr/pgsql-10/bin/pg_config --pgxs --->
>> /usr/pgsql-10/lib/pgxs/src/makefiles/pgxs.mk
>> /usr/pgsql-12/bin/pg_config --pgxs --->
>> /usr/pgsql-12/lib/pgxs/src/makefiles/pgxs.mk
>> 
>> /usr/pgsql-10/bin/pg_config --includedir-server --->
>> /usr/pgsql-10/include/server
>> /usr/pgsql-12/bin/pg_config --includedir-server --->
>> /usr/pgsql-12/include/server (postgres.h is there)
>> 
>> I can't understand why it doesn't work.
> 
> Do you have Postgres 12 -dev package installed?
> 
>> 
>> TalGloz
>> 
>> 
>> 
>> --
>> Sent from:
>> https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
>> 
>> 
> 
> 
> -- 
> Adrian Klaver

> adrian.klaver@

Yes, I've installed everything PostgreSQL 12 has to offer:

dnf list installed | grep "postgresql12"
postgresql12.x86_64                                12.2-2PGDG.f31                     
@pgdg12
postgresql12-contrib.x86_64                     12.2-2PGDG.f31                     
@pgdg12
postgresql12-devel.x86_64                       12.2-2PGDG.f31                     
@pgdg12
postgresql12-docs.x86_64                        12.2-2PGDG.f31                     
@pgdg12
postgresql12-libs.x86_64                          12.2-2PGDG.f31                     
@pgdg12
postgresql12-llvmjit.x86_64                       12.2-2PGDG.f31                     
@pgdg12
postgresql12-odbc.x86_64                        12.01.0000-1PGDG.f31            
@pgdg12
postgresql12-plperl.x86_64                       12.2-2PGDG.f31                     
@pgdg12
postgresql12-plpython.x86_64                   12.2-2PGDG.f31                     
@pgdg12
postgresql12-plpython3.x86_64                  12.2-2PGDG.f31                     
@pgdg12
postgresql12-pltcl.x86_64                         12.2-2PGDG.f31                     
@pgdg12
postgresql12-server.x86_64                       12.2-2PGDG.f31                     
@pgdg12
postgresql12-tcl.x86_64                           2.4.0-2.f31.2                        
@pgdg12
postgresql12-test.x86_64                         12.2-2PGDG.f31                     
@pgdg12



--
Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html



pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: Compiling C Extension Functions against PostgreSQL 12
Next
From: Adrian Klaver
Date:
Subject: Re: Compiling C Extension Functions against PostgreSQL 12