我在尝试在 CentOS 5.6 上构建pgmagick
时没有取得多大成功。
我已经通过yum
安装了以下内容:
boost-1.33.1
boost-devel-1.33.1
GraphicsMagick-1.3.14
GraphicsMagick-c++-1.3.14
GraphicsMagick-devel-1.3.14
GraphicsMagick-c++-devel-1.3.14
python-2.6.5
python-devel-2.6.5
但是,每当我尝试构建pgmagick
时,都会收到以下错误:
/usr/include/boost/python/converter/registered.hpp: In instantiation of ‘const boost::python::converter::registration& boost::python::converter::detail::registered_base<const volatile void>::converters’:
/usr/include/boost/python/converter/arg_from_python.hpp:269: instantiated from ‘boost::python::converter::pointer_arg_from_python<T>::pointer_arg_from_python(PyObject*) [with T = void*]’
/usr/include/boost/python/arg_from_python.hpp:70: instantiated from ‘boost::python::arg_from_python<T>::arg_from_python(PyObject*) [with T = void*]’
/usr/include/boost/preprocessor/iteration/detail/local.hpp:37: instantiated from ‘PyObject* boost::python::detail::caller_arity<3u>::impl<F, Policies, Sig>::operator()(PyObject*, PyObject*) [with F = void (*)(Magick::Blob&, void*, long unsigned int), Policies = boost::python::default_call_policies, Sig = boost::mpl::vector4<void, Magick::Blob&, void*, long unsigned int>]’
/usr/include/boost/python/object/py_function.hpp:38: instantiated from ‘PyObject* boost::python::objects::caller_py_function_impl<Caller>::operator()(PyObject*, PyObject*) [with Caller = boost::python::detail::caller<void (*)(Magick::Blob&, void*, long unsigned int), boost::python::default_call_policies, boost::mpl::vector4<void, Magick::Blob&, void*, long unsigned int> >]’
./src/_Blob.cpp:43: instantiated from here
/usr/include/boost/python/converter/registered.hpp:88: error: no matching function for call to ‘registry_lookup(const volatile void (*)())’
error: command 'gcc' failed with exit status 1
我也尝试过安装 boost141
、boost141-devel
和 boost141-python
,但 pgmagick 不会针对这些库进行构建。
关于如何解决问题或进一步诊断问题的任何建议?
看起来版本不兼容问题,请尝试使用 boost-1.34
当你运行配置时,我假设你./configure --enable-shared=yes
执行它(注意参数)。如果你这样做了(就像教程所说的那样),我认为没有理由它不应该工作。如果您没有这样做,这可能会有所帮助。
事实证明,使其工作的唯一方法是:
- 从系统中删除所有预编译的
boost
rpm - 从系统中删除所有预编译的
GraphicsMagick
rpm - 使用
./configure --prefix=/usr --enable-shared=yes
手动编译boost-1.49.0
- 通过
yum
重新安装GraphicsMagick-1.3.14
、GraphicsMagick-c++-1.3.14
、GraphicsMagick-devel-1.3.14
和GraphicsMagick-c++-devel-1.3.14
- 从位桶克隆
pgmagick
存储库 - 在
pgmagick
目录中再次运行python setup.py install