刚开始学习,记忆不是很好,容易忘,边学边记,阅读的速度会比较慢,看的会比较仔细。

这边主要参考以下博客,前辈们水平很高,写的很详细,详细的知识学习可查看以下链接。
详细请看:
  何小龙CSDNhttps://blog.csdn.net/hexiaolong2009/article/details/83720940
  源码获取地址hexiaolong2008/sample-code


源码获取方式图解(ubuntu系统):


  方式一:git下来,进入ubuntu 的终端页面,输入指令:git clone https://github.com/hexiaolong2008/sample-code.git



  方式二:下载压缩包,在Windows下解压zip,后移植到ubuntu系统文件目录下(正常虚拟机支持直接复制粘贴过去,实在不行就使用对应的传输软件实现)



编辑Makefile文件进行编译


  根据博主的顺序进行实验:最简单的DRM应用程序 (single-buffer)详细内容请观看原博客。
  那么进入对应文件目录:sample-code ==> drm ==> application ==> modeset-single-buffer.



  这时可看到这么四个文件,先从该路径下进入终端:



  若直接对.c文件进行编译会提醒缺少头文件,根据前篇会发现这边比较下少了Makefile文件,故这边模仿编写Makefile文件即可。命令行输入:vim Makefile



  进入按下i进入编辑模式,复制以下代码(Ctrl +C),粘贴(Ctrl+Alt+V),按下Esc键退出编辑模式输入:wq,后便可在对应文件夹下出现对应的Makefile文件:(注意若粘贴过去出现红色长条则需要再对应位置处按下bakespace键,将该处空格清除掉,就会消除红条)


FLAGS=`pkg-config --libs libdrm --cflags`
FLAGS+=-Wall -O0 -g
FLAGS+=-D_FILE_OFFSET_BITS=64

all:
        gcc -o modeset-single-buffer modeset-single-buffer.c $(FLAGS)


      然后再终端下再输入指令: make,即可编译成功出现执行文件。



      这时候便想直接运行看看,但是发现不行,原因我觉得应该是我现在用的是图形化的系统,这个本身就会占用显卡,也就是Computer/dev/dri下的card0文件,于是会报错说没有权限。



    运行modeset-single-buffer


      这时候可选择从图形化的Ubuntu系统下切换为服务器的Ubuntu系统,可使用快捷键(Ctrl+Alt+F1~F6),具体大家可百度以下,我这边F1、F2为图形化系统,F3 ~ F6均为服务器系统。
      这时候你输入对应的用户名和密码(若密码一直不通过的话,你应该需要按一下键盘上的数码锁定键【Num Lock】)进入对应的路径,然后输入指令运行文件(指令看下面可看)。



      正常这样就可以看到实验现象,若出现卡屏可选择切换会图形化界面或者按下Ctrl+C终止该程序。若还是不行就重启一下系统把。
      实验现象跟博主是一样的,先白屏,回车后变为黑屏。此时无法变回服务器界面,这时需要先切换为图形化界面再切换服务器界面才可恢复原先服务器界面。(原因应该是因为该程序占用了显示屏,之后无法切回去,需要手动切回图形化界面后才可以将显卡切回去吧,特别要注意,变白屏后需要按下回车变为黑屏后在切换会图形化界面,否则就会卡屏切不回去)