Ubuntu编译开源卡丁车(supertuxkart)项目

作者这几年从事Linux相关(内核和系统)开发中发现,熟悉并使用Git相关服务可以很轻松完成工作任务和学习。GitHub绝大程度上代表了开源、共享理念,本篇文章作为入门篇和大家一起了解GitHub开源适用场景,本篇示例采用Github上的开源项目“supertuxkart”!
图1 项目编译界面
图1 项目编译界面

图2 项目运行界面
图2 项目运行界面

图1和图2中我们看到了“supertuxkart”项目编译和运行界面,接下来我们开始项目的搭载工作!

首先访问GiHub:https://github.com

图3 GitHub主界面
图3 GitHub主界面

我们进入了GitHub主界面,这里可以看到用户登录窗口,这里简单说明一下,如果我们只是单纯参考或下载项目不需要登录(申请)用户,如果想要创建或提交项目需要登录(申请)用户,参考图3。
示例这里我们暂时只需要下载项目。

图4 GitHub项目搜索
图4 GitHub项目搜索

我们在右上方的编辑框内输入“supertuxkart”,参考图4,然后点击“All GitHub”或按Enter按键。

图5 GitHub项目选择
图5 GitHub项目选择

现在我们选择需要下载的项目,参考图5,可以看到有许多不同的用户创建的“supertuxkart”项目及项目模块(一部分属于扩展模块,这些可以根据项目需要选择下载),在项目的右侧圆圈位置可以看到项目主要编写语言,五角星表示项目关注人数。
当然我们也可以根据项目编写的主要语言来选择项目,参考左下侧“Languages”。

在这里我们只需要项目的源码,根据编写主要编写语言和关注人数总量我们选择“supertuxkart/stk-code”,它的主要编写语言是C++,关注人数在2K左右。

图6 GitHub项目地址复制
图6 GitHub项目地址复制

我们进入了“supertuxkart/stk-code”项目,点击右下侧“Clone or download”按钮,在弹出的编辑框内是项目下载地址,点击右侧笔记本图标完成下载地址复制。

GitHub项目地址主要分为两种方式Https或Git:
Https方式:
一般作为公共资源下载,大部分情况项目不需要认证,可以直接下载。如果是需要授权的项目,使用Git clone方式需要输入授权过的用户名和密码。Https方式在用户未登录或不需要授权方式时下载项目比较方便。
Git方式:
这种方式一般用来工作时使用,比如buildroot编译动态下载的项目使用,这种方式不用输入用户和密码(一般用于命令台编译项目使用)。这种方式一般需要提前在命令行程序设置用户名和密码。

下面打开命令行程序开始下载项目源码…

图7 GitHub项目源码下载
图7 GitHub项目源码下载

首先创建一个文件夹用来存储项目源码,示例在/home/linux(用户)下创建了一个“supertuxkart”文件夹,并使用 “git clone https://github.com/supertuxkart/stk-code.git” 指令下载项目源码并等待源码下载完成…

首次使用Git指令的朋友需要安装Git工具,指令为 sudo apt-get install git

supertuxkart项目编译还需要“stk-assets”内的相关文件,其中包括背景音乐、背景图片、图片处理等文件,这些没有存在源码中需要单独下载,作者在GitHub上下载了几个“stk-assets”相关命名的项目并不能使用,最后下载了“supertuxkart”安装包并拷贝出必要的文件才能运行项目。

supertuxkart-1.0-linux下载地址:
https://sourceforge.net/projects/supertuxkart/files/SuperTuxKart/1.0/supertuxkart-1.0-linux.tar.xz/download

“supertuxkart”源码下载完成后,创建“stk-assets”相关文件:

图8 创建stk-assets文件夹
图8 创建stk-assets文件夹

  1. 首先在我们源码下载的文件夹内“stk-code”同级目录创建“stk-assets”文件夹;
  2. 解压“supertuxkart-1.0-linux.tar.xz”项目并进入supertuxkart-1.0-linux/data文件夹;
  3. 拷贝library、models、music、sfx、textures、tracks到我们刚创建的“stk-assets”文件夹内,参考下图9。

图9 拷贝相关文件夹
图9 拷贝相关文件夹

创建“stk-assets”文件夹并拷贝相关文件夹这一步是必须的(或许有更好的解决方式),作者当时按照编译时的提示,在“stk-code”的CMakeLists.txt中没让项目检查stk-assets相关信息时,即使程序编译通过也不能运行。
如果不创建stk-assets文件夹,项目将查找“stk-code”中的data文件夹,如果在“stk-code”中的data文件夹中拷贝这些文件,源码会显得比较浮肿对于项目修改后的提交或更新有影响(这部分代码肯定不能提交上去)。

接下来还需要安装openglrecorder
openglrecorder属于视频录制工具,也是“supertuxkart”项目运行的必备项,由于没有找到指令安装方式,也采用GitHub下载并编译项目然后安装。
openglrecorder主页:https://github.com/Benau/libopenglrecorder
当然,这个项目也可以采用上面的GitHub方式下载,下面说下编译方式:

安装依赖库:
sudo apt-get install build-essential cmake libturbojpeg
libvpx-dev libogg-dev libvorbisenc2 libvorbis-dev
libpulse-dev pkg-config

编译并安装项目:
mkdir cmake_build
cd cmake_build
cmake …
make -j4
sudo make install

程序使用cmake方式编译程序,它根据项目配置自动生成makefile文件,非常适用大型项目的编译环境搭建,这里cmake_build可以任意取名,他只是用来存放编译出的文件。

项目编译:
前面的准备工作完成后,下面开始编译“supertuxkart”源码:
编译方式与“openglrecorder”项目相同,只编译和运行程序不需要“sudo make install”这一步。

  1. 安装相关工具:
    sudo apt install libglew-dev libxext-dev libxrandr-dev libwayland-dev
    libssl-dev

备选项(编译时如果提示缺失下列库再进行安装):
sudo apt install libenet-dev
sudo apt install openal-dev
sudo apt install libpng12-dev
sudo apt install libbluetooth-dev
sudo apt install libfreetype6-dev
sudo apt install libharfbuzz-dev
sudo apt install libfribidi-dev
sudo apt install libcurl4-gnutls-dev
sudo apt install libsqlite3-dev
sudo apt install libhdf5-serial-dev
sudo apt install hdf5-tools

到这里项目基本可以编译成功,运行时应该还会提示“NotololorEmoji.tty”相关错误,下面贴上解决方式:

这种情况属于字体转换问题,还是在GitHub上搜索到的相关库…,noto-emoji主页:https://github.com/googlefonts/noto-emoji

下载完成后进入noto-Emojj/font文件夹拷贝 NotoColorEmoji.ttf 文件替换stk-code/data/ttf文件夹内的NotoColorEmoji.ttf 文件。

通过这段时间的摸索发现,supertuxkart项目还是存在个别问题,后续观察GitHub上解决情况!

发布了87 篇原创文章 · 获赞 195 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/a29562268/article/details/93377081