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