7

pgmagick尝试使用 XCode 4.3.1 在 OS X Lion 上构建时,我没有取得太大的成功。

我已经使用以下命令(通过自制软件)安装了 ImageMagick 和 GraphicsMagick,以及 boost:

$ brew install graphicsmagick --with-magick-plus-plus
$ brew install imagemagick --with-magick-plus-plus
$ brew install boost --with-thread-unsafe

然后我在https://bitbucket.org/hhatto/pgmagick克隆 repo :

$ hg clone https://bitbucket.org/hhatto/pgmagick/src
$ cd pgmagick
$ python setup.py build

但是我总是收到以下错误:

ld: library not found for -lboost_python
collect2: ld returned 1 exit status

根据 stdout 上的输出,setup正在为 boost ( ) 寻找正确的位置/usr/local/lib

我也尝试过easy_installpip但没有运气。我正在使用 Pythonbrew,但也禁用了它并尝试使用股票 python 安装 - 仍然没有成功。

关于如何解决问题或进一步诊断问题的任何建议?

4

5 回答 5

8

根据我自己在 brew 0.9 和 OSX 10.6.8 中对这个问题的重现,--with-thread-unsafe当前的 brew 公式文件没有解决这个问题。您可以通过检查公式brew edit boost并查看该选项是否出现在公式的内容中来验证这一点。

正因为如此,libboost_python-mt.aandlibboost_python-mt.dylib正在被建造而不是libboost_python.aand libboost_python.dylib

解决此问题的最简单方法是编辑您的 pgmagick setup.py 以替换boost_lib="boost_python"为(如在此处boost_lib="boost_python-mt"指出的那样)或按照说明并在此处打补丁。否则这是一个已知问题。

于 2012-03-26T20:59:43.637 回答
4

/usr/local/lib/ 中的 boost_python 库以 libboost_python-mt.a 和 libboost_python-mt.dylib 命名,因为默认编译是启用了多线程支持。

在 setup.py 中的 ELSE 条件下 Grep boost_lib="boost_python" 并将其替换为 boost_lib="boost_python-mt",将修复“未找到”问题。

也可以将“-mt”版本添加到 libboost_python.a:如此针对 linux boost 所述,自 1.42 以来不再附加“-mt”后缀。

忽略这一行或者你可以“with-boost-python=boost_python-mt python setup.py install”。您可以将“--with-boost-python=boost_python-mt”附加到 setup.py 中的 extra_compile_args,以实现相同的目标。

此外,您可以通过 pip 在托管环境中安装 pgmagick。参考http://rohanradio.com/blog/2011/12/02/installing-pgmagick-on-os-x/

于 2012-03-26T08:08:57.323 回答
2

请注意,截至 2014 年 7 月,boost Python 库是一个名为boost-python.

5254f8f510fb30484f8fac8be3d38e388a4392e2
Author: Tim D. Smith <git@tim-smith.us>
Date:   Sat Jul 19 15:37:25 2014 -0700

    Split out Boost.Python

您需要单独安装它以获取libboost_python共享库。

于 2014-09-28T05:00:52.050 回答
0

我已经向自制软件提交了一个拉取请求,以使用构建 pgmagick 所需的 mt 和非 mt(线程和线程不安全)二进制文件构建 Boost。

原来这是一个相当普遍的问题,在补丁被接受之前,您可以查看或使用我的公式为 Boost 构建 pgmagick。

于 2013-06-11T20:36:02.787 回答
0

DYLD_FALLBACK_LIBRARY_PATH=/usr/local/lib 在构建之前在环境中设置是否有帮助

例如

$ export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/lib
$ hg clone https://bitbucket.org/hhatto/pgmagick/src
$ cd pgmagick
$ python setup.py build
于 2012-03-22T23:58:43.170 回答