Postgresql
遷移到 Postgres 11 時未定義的符號
將 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 Mb
postgis-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 版本。如果有的話,那是發行版的問題。