Re: Compiling C Extension Functions against PostgreSQL 12 - Mailing list pgsql-general
From | Adrian Klaver |
---|---|
Subject | Re: Compiling C Extension Functions against PostgreSQL 12 |
Date | |
Msg-id | 4edd59f3-4d95-c41c-6839-7d022946f8d4@aklaver.com Whole thread Raw |
In response to | Compiling C Extension Functions against PostgreSQL 12 (TalGloz <glozmantal@gmail.com>) |
Responses |
Re: Compiling C Extension Functions against PostgreSQL 12
|
List | pgsql-general |
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@aklaver.com
pgsql-general by date: