【问题标题】:Error installing XercesC with MinGW使用 MinGW 安装 XercesC 时出错
【发布时间】:2015-09-11 14:48:53
【问题描述】:

我正在尝试使用 MinGW 构建 XercesC-3.1.2。

在xerces目录下运行$ mingw32-make后,出现如下错误:

mingw32-make[4]: Entering directory '/my/path/to/xerces-c-3.1.2/src'
process_begin: CreateProcess(NULL, /bin/mkdir -p xercesc/util, ...) failed.
make (e=2): The system cannot find the file specified.

按照XercesC build instructions,我正在运行configure 脚本

$ ./configure CC=mingw32-gcc CXX=mingw32-g++

但没有变量LDFLAGS=-no-undefined。这与 XercesC 网页中的构建说明相反,因为否则配置脚本将无法工作,因为 gcc 无法识别标志。不过,configure 脚本似乎运行良好。之后,运行mingw32-make 会出现上述错误。

我的 mingw32-make 和 mingw32-gcc 版本是

  • mingw32-gcc/g++ 4.8.1
  • mingw32-make 3.82.90

我尝试将C:\MinGW\libexec\gcc\mingw32\4.8.1 添加到我的PATHas suggested by Codeblocks,但没有退出。

我还在另一台没有其他编译器(或 Cygwin 或其他任何东西)的机器上全新安装了 MinGW,并得到了相同的结果。

【问题讨论】:

  • 您确定要构建的是 xerces-c-3.2.1 吗?您提到的构建说明似乎适用于 xerces-c-3.1.2(这似乎是当前发布的版本)。
  • xerces-c 编译系统不允许你创建一个DLL,没有LDFLAGS=-no-undefined;这是隐含的,因此在构建 Windows DLL 时非常多余,因此我认为需要明确指定它是构建系统错误。在配置脚本中滥用它进一步加剧了这种情况,(导致configure"compiler cannot create executables" 异常中止;但是,可以在 after 之后指定它i> 运行configure,作为调用make 时的宏规范。
  • 是的,@KeithMarshall,xerces-c-3.1.2,抱歉打错了。

标签: windows gcc mingw xerces-c


【解决方案1】:

我猜你正在使用 MSYS 来运行配置脚本,那么你为什么在 make 步骤中使用 mingw32-make 呢?您也应该在 MSYS 中运行 make 步骤,并使用 MSYS 提供的 make。您看到的错误消息表明 mingw32-make 无法解析到 /bin/mkdir 的路径,这是一个 MSYS 命令,并且不应在 MSYS shell 进程上下文之外可见。

FWIW,xerces-c-3.1.2 为我构建 OOTB,与 gcc-4.9.3 和 binutils-2.24.1 交叉编译,如下:

tar xf ~/Downloads/xerces-c-3.1.2.tar.xz
mkdir xerces-c-3.1.2/build
cd xerces-c-3.1.2/build
../configure --build=x86_64-linux-gnu --host=mingw32 --prefix=/mingw --enable-static --enable-shared
...
make LDFLAGS=-no-undefined
make prefix=`pwd`/dist/staged install

【讨论】:

  • 感谢@KeithMarshall 您的解决方案有效。我是 MinGW 的新手,我不知道 makemingw32-make 之间有这种区别。我尝试使用mingw32-make 的原因是因为我首先在 Cygwin 中这样做,并且我想确保我使用 MinGW 而不是为 Cygwin 进行编译。看来我毕竟不需要使用 Cygwin。
  • 可以使用 Cygwin、@FKaria,就像我使用 Linux 作为 my 构建平台一样。您需要将--build=...--host=... 选项调整为configure 脚本,以匹配适合Cygwin 到MinGW 交叉环境的任何内容; (我不能帮你)。此后,您将使用 Cygwin 的 make 来完成构建,使用由 configure 标识的任何交叉编译器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 2019-12-25
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
相关资源
最近更新 更多