Pgexodus handbuilding instructions: Difference between revisions
From NEOSYS Dev Wiki
Jump to navigationJump to search
(New page: Note that all routines are marked for "C linkage" in order to work with the postgres library "pq". For convenience they are all compiled under C++ since callexodus requires boost which is...) |
(No difference)
|
Revision as of 12:32, 10 July 2009
Note that all routines are marked for "C linkage" in order to work with the postgres library "pq". For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library "rt".
cd ~/exodus/trunk/exodus/pgexodus/src
g++ -fpic -c *.c *.cpp -I`pg_config --includedir` -I`pg_config --includedir-server` g++ -shared -o pgexodus.so *.o -lrt -lpq
Check the build as follows:
ld pgexodus.so
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.
pgexodus.so: undefined reference to `Float8GetDatum' pgexodus.so: undefined reference to `pg_atoi' pgexodus.so: undefined reference to `CurrentMemoryContext' pgexodus.so: undefined reference to `pg_detoast_datum' pgexodus.so: undefined reference to `pfree' pgexodus.so: undefined reference to `elog_start' pgexodus.so: undefined reference to `MemoryContextAlloc' pgexodus.so: undefined reference to `elog_finish'
Also check the following
ldd -u pgexodus.so
Should give something like:
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued) undefined symbol: CurrentMemoryContext (./pgexodus.so) Unused direct dependencies: /lib/librt.so.1 /usr/lib/libpq.so.5 /lib/libm.so.6 /lib/libgcc_s.so.1