Cesium Error when compiling on Windows 11

I follow the developer instructions to build the Cesium for Unity package, but when I get to the step where you need to compile the native~ library, I get these errors:

D:/myunity/cesium-unity-samples/Packages/com.cesium.unity/native~/extern/cesium-native/extern/s2geometry/src/s2/util/endian/endian.h:111:2: error: #error “Unsupported bytesex: Either IS_BIG_ENDIAN or IS_LITTLE_ENDIAN must be defined”
#error “Unsupported bytesex: Either IS_BIG_ENDIAN or IS_LITTLE_ENDIAN must be defined” // NOLINT
^~~~~
[ 15%] Building C object extern/cesium-native/extern/KTX-Software/CMakeFiles/ktx_read.dir/lib/texture2.c.obj
[ 15%] Building CXX object extern/cesium-native/extern/CMakeFiles/s2geometry.dir/s2geometry/src/s2/util/bits/bits.cc.obj
In file included from D:/myunity/cesium-unity-samples/Packages/com.cesium.unity/native~/extern/cesium-native/extern/s2geometry/src/s2/s2cell_id.h:29:0,
from D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\s2geometry\src\s2\s2cell_id.cc:18:
D:/myunity/cesium-unity-samples/Packages/com.cesium.unity/native~/extern/cesium-native/extern/s2geometry/src/s2/base/port.h: In function ‘void* aligned_malloc(size_t, size_t)’:
D:/myunity/cesium-unity-samples/Packages/com.cesium.unity/native~/extern/cesium-native/extern/s2geometry/src/s2/base/port.h:903:7: error: ‘posix_memalign’ was not declared in this scope
if (posix_memalign(&ptr, minimum_alignment, size) == 0)
^~~~~~~~~~~~~~
[ 15%] Building C object extern/cesium-native/extern/libwebp/CMakeFiles/webpdsp.dir/src/dsp/alpha_processing.c.obj
[ 16%] Building C object extern/cesium-native/extern/libwebp/CMakeFiles/webputils.dir/src/utils/bit_reader_utils.c.obj
In file included from D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\KTX-Software\lib\filestream.c:34:0:
D:/myunity/cesium-unity-samples/Packages/com.cesium.unity/native~/extern/cesium-native/extern/KTX-Software/include/ktx.h:37:0: warning: “KTX_API” redefined
#define KTX_API

:0:0: note: this is the location of the previous definition
D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\KTX-Software\lib\filestream.c: In function ‘ktxFileStream_getsize’:
D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\KTX-Software\lib\filestream.c:327:38: error: ‘S_IFSOCK’ undeclared (first use in this function); did you mean ‘S_IFBLK’?
if (ftype == S_IFIFO || ftype == S_IFSOCK)
^~~~~~~~
S_IFBLK
D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\KTX-Software\lib\filestream.c:327:38: note: each undeclared identifier is reported only once for each function it appears in
In file included from D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\KTX-Software\lib\strings.c:18:0:
D:/myunity/cesium-unity-samples/Packages/com.cesium.unity/native~/extern/cesium-native/extern/KTX-Software/include/ktx.h:37:0: warning: “KTX_API” redefined
#define KTX_API

:0:0: note: this is the location of the previous definition
[ 16%] Building C object extern/cesium-native/extern/libwebp/CMakeFiles/sharpyuv.dir/sharpyuv/sharpyuv_sse2.c.obj
In file included from D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\KTX-Software\lib\swap.c:12:0:
D:/myunity/cesium-unity-samples/Packages/com.cesium.unity/native~/extern/cesium-native/extern/KTX-Software/include/ktx.h:37:0: warning: “KTX_API” redefined
#define KTX_API

:0:0: note: this is the location of the previous definition
mingw32-make.exe[2]: *** [extern\cesium-native\extern\KTX-Software\CMakeFiles\ktx_read.dir\build.make:256: extern/cesium-native/extern/KTX-Software/CMakeFiles/ktx_read.dir/lib/filestream.c.obj] Error 1
mingw32-make.exe[2]: *** Waiting for unfinished jobs…
In file included from D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\KTX-Software\lib\texture.c:32:0:
D:/myunity/cesium-unity-samples/Packages/com.cesium.unity/native~/extern/cesium-native/extern/KTX-Software/include/ktx.h:37:0: warning: “KTX_API” redefined
#define KTX_API

:0:0: note: this is the location of the previous definition
In file included from D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\KTX-Software\lib\texture2.c:30:0:
D:/myunity/cesium-unity-samples/Packages/com.cesium.unity/native~/extern/cesium-native/extern/KTX-Software/include/ktx.h:37:0: warning: “KTX_API” redefined
#define KTX_API

:0:0: note: this is the location of the previous definition

I am using dotnet SDK version 7.0.306
I am using GCC 7.3.0
I am using windows 11 Home Edition
I am using CMake 3.27.0

Is there anything I’m doing wrong? How can I fix this?

You need to use a newer version of GCC. I believe at least version 9 is required. But really, on Windows, you probably need to use Visual Studio. Anything else may work, but is totally untested.

Thank you very much for your help, But i upgraded gcc to 12.2.0 as you did and recompiled with the following error:

D:/myunity/cesium-unity-samples/Packages/com.cesium.unity/native~/extern/cesium-native/extern/KTX-Software/include/ktx.h:37: warning: “KTX_API” redefined
37 | #define KTX_API
|
: note: this is the location of the previous definition
D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\KTX-Software\lib\filestream.c: In function ‘ktxFileStream_getsize’:
D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\KTX-Software\lib\filestream.c:327:38: error: ‘S_IFSOCK’ undeclared (first use in this function)
327 | if (ftype == S_IFIFO || ftype == S_IFSOCK)
| ^~~~~~~~
D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\KTX-Software\lib\filestream.c:327:38: note: each undeclared identifier is reported only once for each function it appears in
mingw32-make.exe[2]: *** [extern\cesium-native\extern\KTX-Software\CMakeFiles\ktx_read.dir\build.make:256: extern/cesium-native/extern/KTX-Software/CMakeFiles/ktx_read.dir/lib/filestream.c.obj] Error 1
mingw32-make.exe[2]: *** Waiting for unfinished jobs…
In file included from D:\myunity\cesium-unity-samples\Packages\com.cesium.unity\native~\extern\cesium-native\extern\KTX-Software\lib\hashlist.c:35:
D:/myunity/cesium-unity-samples/Packages/com.cesium.unity/native~/extern/cesium-native/extern/KTX-Software/include/ktx.h:37: warning: “KTX_API” redefined
37 | #define KTX_API
|
: note: this is the location of the previous definition

What else can I do?

Unless you’re a C++ expert who is willing to persue upstream changes in KTX-Software and other third-party libraries to make them work in GCC on Windows… you’ll have to use Visual Studio / Visual C++ instead of GCC.

As you said, I used visual studio and compiled it through, thank you very much for your help.