我正在尝试交叉编译 OpenImageIO对于使用 MinGW 的 Fedora 26 上的 64 位 Windows。在使用 yum
检索依赖项的 mingw 版本后,我运行了 mingw64-cmake
,然后是 make
。但是,我立即收到有关未找到 stdlib.h
的编译错误。
[ 0%] Built target CopyFiles
[ 0%] Building CXX object src/libutil/CMakeFiles/OpenImageIO_Util.dir/argparse.cpp.obj
In file included from .../oiio/src/libutil/argparse.cpp:36:0:
/usr/x86_64-w64-mingw32/sys-root/mingw/include/c++/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
#include_next <stdlib.h>
^~~~~~~~~~
compilation terminated.
我已确认至少在 /usr/include/
和 /usr/x86_64-w64-mingw32/sys- 中找到了
给出编译器错误的文件也位于此位置。stdlib.h
root/mingw/include/c++/
为什么我仍然收到错误 stdlib.h: No such file or directory
?
更新:
我做了额外的研究并了解了以下内容:预处理器指令 #include_next 的行为类似于 #include 指令,除了它明确地从要搜索命名文件的路径中排除包含文件的目录。
这可以解释为什么 cstdlib
没有从同一文件夹中找到 stdlib.h
。但是 cstdlib
是 MinGW 的一部分,而不是我要编译的代码的任何部分。所以我仍然不知道这里出了什么问题或如何修复此错误。
编辑:这里是编译器版本信息,以防有用:https://pastebin.com/PZiXS2fg .这是全新安装,因此应该没有任何异常。
最佳答案
我解决了,可以重新编译
解决方案(对我来说)是将变量 CPLUS_INCLUDE_PATH
添加到路径并将其设置为 MinGW c++ 包含目录,对我来说:C:\MinGW\lib\gcc\mingw32\6.3.0\include\c++
.
我希望它对你也有用。
关于c++ - mingw/include/c++/cstdlib : stdlib. h: 没有那个文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45245923/