c++ gcc cmake mingw fedora

mingw/include/c++/cstdlib: stdlib.h: no existe ningún archivo o directorio



gcc cmake (2)

El uso de #include_next parece causar muchos problemas en función de mi Google. Intente directamente incluir stdlib.h usando la siguiente sintaxis:

-isystem /usr/x86_64-w64-ming32/sys-root/mingw/include/c++

Esta sintaxis se agregó en gcc 6.0 para resolver problemas con bibliotecas de terceros. Vea aquí el enfoque y el razonamiento.

Editar: respuesta modificada para reflejar nueva información sobre gcc wrapper_headers y #include_next

Estoy intentando compilar de forma cruzada OpenImageIO para Windows de 64 bits en Fedora 26 usando MinGW. Después de usar yum para recuperar las versiones mingw de las dependencias, ejecuté mingw64-cmake seguido de make . Sin embargo, de inmediato recibo un error de compilación sobre stdlib.h no se encuentra.

[ 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.

He confirmado que stdlib.h se encuentra al menos en /usr/include/ y en /usr/x86_64-w64-mingw32/sys-root/mingw/include/c++/ donde también se encuentra el archivo que proporciona el error del compilador.

¿Por qué aún recibo el error stdlib.h: No such file or directory existe stdlib.h: No such file or directory ?

Actualización: hice una investigación adicional y aprendí lo siguiente: The preprocessor directive #include_next behaves like the #include directive, except that it specifically excludes the directory of the including file from the paths to be searched for the named file.

Esto explicaría por qué cstdlib no encuentra stdlib.h desde la misma carpeta. Pero cstdlib es parte de MinGW y no parte del código que estoy tratando de compilar. Así que todavía no tengo idea de qué está mal aquí o cómo solucionar este error.

Editar : Aquí está la información de la versión del compilador en caso de que sea de alguna utilidad: https://pastebin.com/PZiXS2fg . Esta es una instalación nueva, por lo que no debería haber nada inusual allí.


Lo resolví, puedo compilar de nuevo.

La solución (para mí) es agregar a la ruta la variable CPLUS_INCLUDE_PATH y establecerla en el directorio de inclusión de MinGW c ++, para mí: C:/MinGW/lib/gcc/mingw32/6.3.0/include/c++ .

Espero que funcione para ti tambien.