从零开始手敲次世代游戏引擎(三)

前一篇文章我们建立了windows上的clang工具链。
为了今后时刻可以检验我们的代码也可以在LINUX等环境下正常编译运行,我们现在开始建立LINUX下的编译环境。
LINUX可以选择任意一个发行版本。不同的发行版本在api接口方面是接近的,主要的不同是软件包的版本,以及包管理方式等。
ubuntu系列更新比较频繁,包体的版本较新。
centos系列是redhat系列的免费版,比较稳扎稳打,包体相对旧一些。
debian则更新非常的慢了。
bsd系列(这个严格来说不是LINUX,而是类UNIX系统) 中规中矩,严守unix规范,相对难用一些。
最重要的是,是否有最大的两家GPU厂商的驱动支持。目前N卡的支持情况相对较好,A卡之前很差,现在有了OpenGPU这个项目,以及amdpro系列驱动,情况有所好转。
我所用的是带GPU的阿里云主机,有A卡版本和N卡版本。N卡版本比A卡版本贵不少,而且考虑到当代主机是以A卡为主,所以选用了A卡主机。
可能因为虚拟化的关系,阿里云上的A卡主机需要阿里云和AMD合作定制的特殊驱动。AMD官网上下载的驱动装上之后设备初始化会出错。而阿里云不提供这个特殊版驱动的单体,只提供预装了驱动的系统镜像。目前可选的只有CentOS和ubuntu。
需要注意的是由于amdpro驱动是内核模块插入方式,因此对内核的升级就比较敏感。亲测无论是选用CentOS还是ubuntu,如果升级最新内核就会导致驱动失效,所以在新驱动出来之前需要锁定内核版本。
没有云服务器的,也可以在windows机器上安装一个vmware虚拟机,在那个里面装一个linux。免费的vmware workstation player就可以。注意目前对显卡支持较好的vmware是12以上的版本。早期版本只能支持到DX9级别,也就是固定管道渲染。其它虚拟机对显卡的支持更差,比如virtualbox。
Linux下构建toolchain的过程与windows类似(参考上一篇文章),可以使用yum或者apt安装发行版提供的编译好的包,也可以采用下载源码编译的方式。
作为演示,我这里采用另外一种方式,导入docker。docker是一种将特定应用环境容器化的方式,可以是实现应用的快速部署,以及和宿主环境的隔离。
docker入门教程参考:
docker.org.cn/book/dock
安装好docker之后,使用:
docker pull tim03/clang
就可以将我事先准备好的clang环境部署到本地。创建这个docker image的dockerfile则在下面这个地址,如果你想要知道它是怎么创建出来的话:
github.com/netwarm007/d
当docker pull全部完成之后,我们进入到我们Hello Engine所在的目录(就是main.c所在目录),执行:
docker run -it –rm -v $(pwd):/usr/src tim03/clang
我们就会进入带有clang的docker容器,并且我们的源代码目录被映射到了/usr/src目录之下。执行下面的命令编译并观察执行结果:

bash-4.4# ls
LICENSE README.md a.out main.c
bash-4.4# clang main.c
main.c:3:1: warning: return type of 'main' is not 'int' [-Wmain-return-type]
void main() {
^ main.c:3:1: note: change return type to 'int'
void main() {
^~~~ int
1 warning generated.

bash-4.4# ls -l
total 24
-rw-rw-r-- 1 1000 1000 1067 Aug 18 20:12 LICENSE
-rw-rw-r-- 1 1000 1000 100 Aug 18 20:12 README.md
-rwxr-xr-x 1 root root 10368 Aug 18 22:02 a.out
-rw-rw-r-- 1 1000 1000 66 Aug 18 20:15 main.c
bash-4.4# ./a.out
Hello, Engine!
bash-4.4# exit

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 登出 /  更改 )

Google photo

您正在使用您的 Google 账号评论。 登出 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 登出 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 登出 /  更改 )

Connecting to %s

%d 博主赞过: