lethal-guitar / RigelEngine

A modern re-implementation of the classic DOS game Duke Nukem II
GNU General Public License v2.0
911 stars 60 forks source link

Fail to build on Jeson Nano #912

Closed Exarkuniv closed 1 year ago

Exarkuniv commented 1 year ago

its me again. im seeing what i can get working on my jetson nano and right now. this is stumping me its running Ubuntu 22.04.2 LTS

-- Found SDL2main: /usr/lib/aarch64-linux-gnu/libSDL2main.a (found version "2.26.1")
CMake Warning (dev) at /usr/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
  The package name passed to `find_package_handle_standard_args` (SDL2main)
  does not match the name of the calling package (SDL2).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/Modules/FindSDL2.cmake:274 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/Modules/FindSDL2_mixer.cmake:112 (find_package)
  CMakeLists.txt:63 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found SDL2_mixer: /usr/lib/aarch64-linux-gnu/libSDL2_mixer.so (found version "2.0.4")
-- Looking for C++ include filesystem
-- Looking for C++ include filesystem - not found
CMake Error at cmake/Modules/FindFilesystem.cmake:241 (message):
  Cannot Compile simple program using std::filesystem
Call Stack (most recent call first):
  CMakeLists.txt:66 (find_package)

i have followed your install doc for Ubuntu 19. hope you can help me out with this

lethal-guitar commented 1 year ago

Hi @Exarkuniv, this error typically means that the compiler is too old and doesn't support all the necessary C++ 17 library features. What version of gcc is available on that system?

Then again, Ubuntu 22.04 should definitely have a recent enough gcc.

Can you post the output of the very beginning of the CMake command, where it prints information about the compiler?

Exarkuniv commented 1 year ago

Then again, Ubuntu 22.04 should definitely have a recent enough gcc.

i had the same thought

i believe this is what you want

= = = = = = = = = = = = = = = = = = = = =
Building 'rigelengine' : RigelEngine - Duke Nukem 2 source port
= = = = = = = = = = = = = = = = = = = = =

-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- No build type was specified, will default to Release
-- RigelEngine, build type: Release, version: 0.9.1
-- Found SDL2: /usr/lib/aarch64-linux-gnu/libSDL2.so (found version "2.26.1")
CMake Warning (dev) at /usr/share/cmake-3.27/Modules/FindPackageHandleStandardAr gs.cmake:438 (message):
  The package name passed to `find_package_handle_standard_args` (SDL2main)
  does not match the name of the calling package (SDL2).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/Modules/FindSDL2.cmake:274 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:62 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found SDL2main: /usr/lib/aarch64-linux-gnu/libSDL2main.a (found version "2.26 .1")
CMake Warning (dev) at /usr/share/cmake-3.27/Modules/FindPackageHandleStandardAr gs.cmake:438 (message):
  The package name passed to `find_package_handle_standard_args` (SDL2main)
  does not match the name of the calling package (SDL2).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/Modules/FindSDL2.cmake:274 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/Modules/FindSDL2_mixer.cmake:112 (find_package)
  CMakeLists.txt:63 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found SDL2_mixer: /usr/lib/aarch64-linux-gnu/libSDL2_mixer.so (found version  "2.0.4")
-- Looking for C++ include filesystem
-- Looking for C++ include filesystem - not found
CMake Error at cmake/Modules/FindFilesystem.cmake:241 (message):
  Cannot Compile simple program using std::filesystem
Call Stack (most recent call first):
  CMakeLists.txt:66 (find_package)

-- Configuring incomplete, errors occurred!
lethal-guitar commented 1 year ago

i believe this is what you want

Yes, perfect, thanks! Ok yeah it's as I thought, it's using gcc 7.5.0 but you need at least gcc 8.1.0 as per the instructions.

I'm not sure why a system based on Ubuntu 22.04 ships with such an old gcc. You might need to separately install a newer one, or maybe it's already installed and just not selected as the default.

Exarkuniv commented 1 year ago

ok, ill take a look and report back

so it seems that both gcc 10 and gcc 7 are installed but it seemed that gcc7 was picked for as default for both gcc and g++

i changed that, and now its going. as always, thanks for your help

lethal-guitar commented 1 year ago

Awesome, glad I could help!