0

我有使用 ImageMagic++ 库的 x86 C++ 应用程序。我也有 CentOS 7 x86_64 的机器。我需要在这台机器上构建我的应用程序。我已经安装了 i686 ImageMagick 库:

[dvoryankin@testsuitel]$ yum list installed | grep Magick
 ImageMagick.i686                   6.7.8.9-10.el7                      @base    
 ImageMagick-c++.i686               6.7.8.9-10.el7                      @base    
 ImageMagick-c++-devel.i686         6.7.8.9-10.el7                      @base    
 ImageMagick-devel.i686             6.7.8.9-10.el7                      @base

当我尝试构建我的应用程序时,出现错误:

/usr/include/ImageMagick/magick/magick-config.h:9:31:
fatal error: magick-config-64.h: No such file or directory
    #include "magick-config-64.h"

发生这种情况是因为文件/usr/include/ImageMagick/magick/magick-config.h使用宏定义__WORDSIZE来确定必须包含哪个文件magick-config-64.hmagick-config-32.h。在我的 CentOS 7 x86_64 机器上,这个宏等于 64,ImageMagick 尝试包含magick-config-64.h但 i686 库没有这个,只有magick-config-32.h

如何在 CentOS 7 x86_64 机器上使用 x86 ImageMagick 库构建 x86 应用程序而不更改任何库文件?

4

2 回答 2

0

也许尝试在配置之前在命令行中定义 __WORDSIZE,例如 CXXFLAGS='-D __WORDSIZE=64'

于 2017-04-11T09:42:35.340 回答
0

我只能建议在一个孤立的位置(不是/usr/目录)重建 ImageMagick 和委托。

curl -O http://www.imagemagick.org/download/ImageMagick.tar.gz
tar zvxf ImageMagick.tar.gz && cd ImageMagick-6.9.2-4
CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32 \
./configure --build=i686-pc-linux-gnu --prefix=/opt/im32

前提是您拥有构建跨平台所需的一切,并且您已经拥有内置的所有 ImageMagick 依赖项x86

该实用程序/opt/im32/bin/Magick++-config可用于打印出应用程序所需的其他编译器/链接器标志。

于 2015-10-16T14:23:57.787 回答