如何链接到终端中缺少的dylib?

时间:2013-11-21 22:41:25

标签: macos terminal postgis

由于我在第一次尝试时获得任何正确的经验,我有点紧张在终端中弄乱任何东西。这就是我要问的原因。

我正在尝试使用全新安装的OSX Mavericks来运行shp2pgsql。我已经使用PostGIS 2.1安装了Postgres 9.3 v2.1.0-2。

我得到的错误是:

dyld: Library not loaded: @loader_path/../lib/libintl.8.dylib
  Referenced from: /Library/PostgreSQL/9.3/bin/shp2pgsql
  Reason: image not found
Trace/BPT trap: 5

我看过了 http://librelist.com/browser//homebrew/2013/5/15/missing-dylib-files/#85200742c00af0a239140b02f860d987表明brew install gettext。这已安装libintl.8.dylib at:

/usr/local/Cellar/gettext/0.18.3.1/lib/libintl.8.dylib

我找到了一些关于如何创建符号(?)链接的资源,但是我不确定这是否是适当的解决方案,甚至在shp2pgsql引用的特定情况下如何执行此操作:

@loader_path/../lib/libintl.8.dylib

谢谢!

-Nicholas

2 个答案:

答案 0 :(得分:0)

您必须重新编译shp2pgsql程序。在升级系统和库时,您现在必须将程序重新编译为这些新库。

答案 1 :(得分:0)

“加载程序”为/Library/PostgreSQL/9.3/bin/shp2pgsql。这使得dyld的@loader_path概念等于/Library/PostgreSQL/9.3/bin。将其替换为库引用会将@loader_path/../lib/libintl.8.dylib转换为/Library/PostgreSQL/9.3/bin/../lib/libintl.8.dylib。简化一下,我们得到/Library/PostgreSQL/9.3/lib/libintl.8.dylib。这就是Postgres显然希望找到libintl库的地方。

如果不存在,则表明Postgres安装已损坏。无论谁提供它,你都必须接受它。

可能你可以通过设置dyld环境变量来解决这个问题。例如,您可以在调用Postgres之前尝试export DYLD_LIBRARY_PATH=/usr/local/lib。但是,这会导致Postgres使用与链接的库不同的库,但不能保证工作。