Postgresql

遷移到 Postgres 11 時未定義的符號

  • November 7, 2018

將 Postgres 10 升級到版本 11 後,使用pg_upgrade,我收到此錯誤:

無法載入庫“$libdir/postgis-2.4”:錯誤:無法載入庫“/usr/pgsql-11/lib/postgis-2.4.so”:/usr/pgsql-11/lib/postgis-2.4.so :未定義符號:geod_polygon_init

我正在使用 CentOS 7 和 Postgis 2.4。

我試著調查了一下。

# nm -D /usr/pgsql-11/lib/postgis-2.4.so |grep geod_polygon_init
 U geod_polygon_init

該函式由共享庫導出!為什麼我會收到此錯誤?

# ld -v /usr/pgsql-11/lib/postgis-2.4.so
GNU ld version 2.27-28.base.el7_5.1
ld: warning: cannot find entry symbol _start; not setting start address
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `repalloc'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `hash_create'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `get_guc_variables'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `init_MultiFuncCall'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `SPI_exec'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `WinGetFuncArgInPartition'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `SPI_gettype'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `geod_polygon_addpoint'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `get_fn_expr_argtype'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `GetDatabaseEncoding'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `SPI_execute'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `CurrentMemoryContext'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `SPI_getvalue'
...

相關問題:

我已經下載了 Postgis 原始碼 2.4.5 並自己編譯,現在可以正常工作了。

My比2.4 Mb 和 750 Mbpostgis-2.4.so提供的要大得多。yum其他生成的庫也是如此。

# ld -v /usr/pgsql-11/lib/postgis-2.4.so
GNU ld version 2.27-28.base.el7_5.1
ld: warning: cannot find entry symbol _start; not setting start address
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `repalloc'
/usr/pgsql-11/lib/postgis-2.4.so: undefined reference to `hash_create'

這實際上不是問題。你不能那樣使用 ld ,我想你想在ldd那裡使用。它是共享對象,而不是執行檔。如果沒有_start(或帶有 的入口點-e),您將無法呼叫ld並生成執行檔

無法載入庫“$libdir/postgis-2.4”:錯誤:無法載入庫“/usr/pgsql-11/lib/postgis-2.4.so”:/usr/pgsql-11/lib/postgis-2.4.so :未定義符號:geod_polygon_init

該錯誤是因為我相信您連結的是太舊的 Proj4 版本。如果有的話,那是發行版的問題。

引用自:https://dba.stackexchange.com/questions/221348