Could not load postgis-2.4.so "undefined symbol: Float8GetDatum"

4

1

Just upgraded to PostgreSQL 10.1 on Arch Linux. Created a fresh new database and I'm trying to install postgis, but it is giving me the following error:

local=# create extension postgis;
ERROR:  could not load library "/usr/lib/postgresql/postgis-2.4.so": /usr/lib/postgresql/postgis-2.4.so: undefined symbol: Float8GetDatum

ldd output:

$ ldd /usr/lib/postgresql/postgis-2.4.so                                                                                                                                        
    linux-vdso.so.1 (0x00007ffec6f4d000)
    libgeos_c.so.1 => /usr/lib/libgeos_c.so.1 (0x00007f6e00788000)
    libproj.so.12 => /usr/lib/libproj.so.12 (0x00007f6e0051e000)
    libjson-c.so.2 => /usr/lib/libjson-c.so.2 (0x00007f6e00313000)
    libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00007f6dfffad000)
    libm.so.6 => /usr/lib/libm.so.6 (0x00007f6dffc61000)
    libc.so.6 => /usr/lib/libc.so.6 (0x00007f6dff8a9000)
    libgeos-3.6.2.so => /usr/lib/libgeos-3.6.2.so (0x00007f6dff4fc000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f6dff175000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f6dfef5e000)
    libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f6dfed40000)
    libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f6dfeb3c000)
    libicuuc.so.59 => /usr/lib/libicuuc.so.59 (0x00007f6dfe78c000)
    libz.so.1 => /usr/lib/libz.so.1 (0x00007f6dfe575000)
    liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007f6dfe34f000)
    /usr/lib64/ld-linux-x86-64.so.2 (0x00007f6e00c6b000)
    libicudata.so.59 => /usr/lib/libicudata.so.59 (0x00007f6dfc83c000)

As far as I understand, "undefined symbol" means there is some incompatibility between libraries, however, I don't have any packages ignored in pacman.conf, so I'm not sure where the incompatibility would come from.

Edit: ld -v output:

$ ld -v /usr/lib/postgresql/postgis-2.4.so
GNU ld (GNU Binutils) 2.29.1
ld: warning: cannot find entry symbol _start; not setting start address
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_palloc'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `WinGetPartitionLocalMemory'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `DirectFunctionCall3Coll'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `numeric_int4'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `DatumGetFloat8'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `examine_variable'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `pg_do_encoding_conversion'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `GetCurrentTransactionId'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `per_MultiFuncCall'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `Float8GetDatum'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `errhint'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `errfinish'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `datumCopy'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_modifytuple'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_typlenbyvalalign'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `deconstruct_array'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_attnum'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `WinGetFuncArgInPartition'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_fnumber'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `makeMdArrayResult'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `DirectFunctionCall1Coll'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `pg_atoi'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_guc_variables'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `heap_freetuple'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `init_MultiFuncCall'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_call_result_type'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `palloc'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `MemoryContextDelete'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `errmsg'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `WinGetFuncArgCurrent'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `pg_detoast_datum_slice'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `accumArrayResult'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `MemoryContextCreate'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `hash_search'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `TupleDescGetAttInMetadata'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `ProcessInterrupts'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `pg_qsort'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_finish'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `list_nth'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `textout'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `ReleaseSysCache'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_exec'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `WinGetCurrentPosition'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `DirectFunctionCall2Coll'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `DirectFunctionCall4Coll'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_gettype'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_connect'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `errstart'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_getbinval'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `end_MultiFuncCall'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `regclassin'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `repalloc'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `WinGetPartitionRowCount'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `BlessTupleDesc'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `CurrentMemoryContext'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `AggCheckCallContext'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_tuptable'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `DirectFunctionCall5Coll'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_fn_expr_argtype'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_attstatsslot'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `array_iterate'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `pg_detoast_datum'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `pg_detoast_datum_copy'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `default_statistics_target'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `hash_create'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `array_create_iterator'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_getvalue'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `HeapTupleHeaderGetDatum'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `GetDatabaseEncoding'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `GetNumConfigOptions'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `my_exec_path'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `heap_form_tuple'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `construct_array'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `ArrayGetNItems'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `pfree'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `SearchSysCache'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `elog_start'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_share_path'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `hash_any'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_typbyval'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `errcode'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `MemoryContextAlloc'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `palloc0'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_typlen'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `array_free_iterator'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_rel_name'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `BuildTupleFromCStrings'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `RelationNameGetTupleDesc'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_processed'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `errmsg_internal'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `vacuum_delay_point'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `pqsignal'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `free_attstatsslot'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `DefineCustomStringVariable'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `elog_finish'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `pstrdup'
/usr/lib/postgresql/postgis-2.4.so: undefined reference to `InterruptPending'

elynnaie

Posted 2017-11-10T15:26:51.580

Reputation: 825

Same issue here, I just downgrading back to 9.6 for the time being – swehren – 2017-11-10T17:00:15.757

paste the result of ld -v, and flag this question for migration to [dba.se] – Evan Carroll – 2017-11-10T19:53:30.437

@EvanCarroll, ld -v output edited into question. – elynnaie – 2017-11-10T19:58:38.330

1So yeah, that PostGIS is all kinds of borked, file a bug on Arch. – Evan Carroll – 2017-11-10T20:03:36.040

or download the source and try to build yourself, but building PostGIS is 0 fun, having done it. – Evan Carroll – 2017-11-10T20:05:07.920

All righty. I created a bug report: https://bugs.archlinux.org/task/56296

– elynnaie – 2017-11-10T20:23:46.500

Answers

0

According to the bug I logged here, https://bugs.archlinux.org/task/56296?opened=19601&status%5B0%5D=, postgis 2.4.1-2 has been released, which introduces PostgreSQL 10.1 compatibility.

I upgraded all my packages, and now everything works great.

elynnaie

Posted 2017-11-10T15:26:51.580

Reputation: 825

1

Actually I just built postgis extension under arch linux. No problems.

  1. Download the source from http://postgis.net/source/

  2. Unpack somewhere

  3. run ./autogen.sh then ./configure then make

this took me 10 mins in not very fast machine

Then go to your postgrest installation folder /usr/lib/postgresql and copy there 2 files: /postgis-2.4.1/postgis/postgis-2.4.so and postgis-2.4.1/raster/rt_pg/rtpostgis-2.4.so. That's all.

Now you can run create extension postgis; without erros

pawel

Posted 2017-11-10T15:26:51.580

Reputation: 11