- Fix case duplicates (guide→Guide, project→Project, etc.) - Consolidate single-post tags into broader categories - Add technology tags (Python, AWS, Salt, Docker, Kubernetes) to 93 posts - Add lib/tag_stats.py tool for checking tag usage - Update CLAUDE.md with tag guidelines
136 lines
3.4 KiB
ReStructuredText
136 lines
3.4 KiB
ReStructuredText
Building 'Dry' and 'Park' from Source on Fedora Linux
|
|
=====================================================
|
|
|
|
:date: 2024-02-03 09:19
|
|
:author: Russell Ballestrini
|
|
:tags: Programming, Game Development, DevOps
|
|
:slug: building-dry-and-park-from-source-on-fedora-linux
|
|
:status: published
|
|
:summary: Learn how to compile the 'Dry' game engine and the 'Park' game from source on Fedora Linux with debugging enabled, and how to analyze core dumps for debugging.
|
|
|
|
In this guide, we'll explore how to compile the 'Dry' game engine and the 'Park' game from source on Fedora Linux with debugging enabled. This process will give you a deeper understanding of the inner workings of game development and the satisfaction of running a game you built yourself.
|
|
|
|
For Ubuntu, go here for pre-compiled game:
|
|
|
|
* https://luckeyproductions.itch.io/park
|
|
|
|
Prerequisites
|
|
-------------
|
|
|
|
Before diving in, ensure you have the necessary tools and libraries installed:
|
|
|
|
- Git
|
|
- CMake
|
|
- GNU Make
|
|
- GCC or Clang
|
|
- X11 and audio system development libraries
|
|
|
|
Install these on Fedora with:
|
|
|
|
.. code-block:: bash
|
|
|
|
sudo dnf groupinstall "Development Tools"
|
|
sudo dnf install cmake git gcc-c++ libX11-devel libXcursor-devel libXinerama-devel libXi-devel libXrandr-devel libXrender-devel libXScrnSaver-devel libXxf86vm-devel pulseaudio-libs-devel nas-libs-devel qt5-qtbase-devel
|
|
|
|
Cloning the Repositories
|
|
------------------------
|
|
|
|
Clone the 'Dry' and 'Park' repositories using Git:
|
|
|
|
.. code-block:: bash
|
|
|
|
cd ~/git
|
|
git clone https://gitlab.com/luckeyproductions/dry.git
|
|
git clone https://gitlab.com/luckeyproductions/games/park.git
|
|
|
|
Building Dry with Debugging Enabled
|
|
-----------------------------------
|
|
|
|
Navigate to the 'dry' directory and prepare the build environment:
|
|
|
|
.. code-block:: bash
|
|
|
|
cd dry
|
|
mkdir build && cd build
|
|
|
|
Configure the build with CMake and enable debugging:
|
|
|
|
.. code-block:: bash
|
|
|
|
cmake .. -DCMAKE_BUILD_TYPE=Debug -DDRY_64BIT=1
|
|
|
|
Compile the Dry library with debug symbols:
|
|
|
|
.. code-block:: bash
|
|
|
|
make
|
|
|
|
Building Park with Debugging Enabled
|
|
------------------------------------
|
|
|
|
In the 'Park' project, modify the ``Park.pro`` file to add the ``-g -O0`` flags for debugging, for example:
|
|
|
|
.. code-block:: bash
|
|
|
|
QMAKE_CXXFLAGS += -std=c++17 -g -O0
|
|
|
|
Then set the ``DRY_HOME`` environment variable to the path of your compiled Dry library:
|
|
|
|
.. code-block:: bash
|
|
|
|
export DRY_HOME=/home/fox/git/dry/build
|
|
|
|
Navigate to the 'park' directory and compile the game:
|
|
|
|
.. code-block:: bash
|
|
|
|
cd /home/fox/git/park
|
|
mkdir build && cd build
|
|
qmake ../Park.pro
|
|
make
|
|
cp -r ../Resources .
|
|
|
|
Running Park
|
|
------------
|
|
|
|
After a successful build, run the Park executable located in the ``build`` directory:
|
|
|
|
.. code-block:: bash
|
|
|
|
./park
|
|
|
|
Analyzing Core Dumps on Fedora
|
|
------------------------------
|
|
|
|
If your application crashes, Fedora can generate core dumps, which are snapshots of the program's state at the time of the crash. These can be invaluable for debugging.
|
|
|
|
List recent core dumps with:
|
|
|
|
.. code-block:: bash
|
|
|
|
coredumpctl list
|
|
|
|
To analyze a specific core dump, use ``gdb``:
|
|
|
|
.. code-block:: bash
|
|
|
|
gdb /path/to/executable /path/to/coredump
|
|
|
|
For example:
|
|
|
|
.. code-block:: bash
|
|
|
|
gdb /home/fox/git/park/Park/park core.291993
|
|
|
|
Once in ``gdb``, use the ``bt`` command to print a backtrace:
|
|
|
|
.. code-block:: gdb
|
|
|
|
(gdb) bt
|
|
|
|
This will show you the call stack at the time of the crash, which can help pinpoint the source of the problem.
|
|
|
|
Happy building and debugging!
|
|
|
|
|
|
.. contents::
|