-
Notifications
You must be signed in to change notification settings - Fork 29
Compile and run
#编译和运行#
##软件包依赖## 在编译之前,请保证系统上安装了如下软件包:
- make
- automake
- autoconf
- libtool
- gcc
##主要编译步骤##
autoreconf -fi
./configure
make V=0
完成以后会在window_manager下生成可执行的服务器程序server。测使用客户端程序在debug/samples里,另外debug/widget里也有一些用来测试控件的程序。
##主要运行步骤## 0. 退出桌面,进入字符界面。VirtualBox是右边的Ctrl+F1,VMWare是Ctrl+Alt+(Space, F1),真实安装的话直接Ctrl+Alt+F1即可。
- 切换到window_manager目录
sudo ./server
- 在另外一个tty里(把上面的F1换成F2)用普通用户登录,切换到
debug/samples
目录,运行客户端程序,比如./tab
。客户程序运行起来之后要回到运行服务器的那个tty才能看到界面。 - 停止服务器:
./shutdown
- ~~停止服务器之后,如果输入没有反应,回车也不换行,可以在回车一次之后输入
reset
再回车,这样会重置终端。这是一个已知的bug。~~该问题在最新的commit中应该已经修复。
##编译步骤说明##
-
autoreconf
是autoconf
、automake
等一系列动作的自动组合,会由configure.ac和Makefile.am(以及它引用的那些local.mk文件)产生configure等脚本程序,以及Makefile.in。 - 再运行上一步生成的
configure
,就会根据Makefile.in产生Makefile和config.h。 - 最后
make
会根据上一步生成的Makefile里的指令编译整个项目。make
的参数"V=0"是说不要显示完整的命令。这样会让编译过程看起来更清晰,警告信息也会更醒目。
其实configure那一步最好是在另一个空的子文件夹下运行,比如新建一个文件夹叫_build
,然后进入_build
,再运行../configure
,并指定参数--srcdir=..
,表示源代码的根目录在当前目录的上一层。这样,configure产生的Makefile等,以及make产生的二进制文件都会放在这个_build
子文件夹下,不会对原来的文件产生干扰。
不过我们的项目比较小,所以就算在原目录下运行./configure
也没问题。
##运行步骤说明## 首先解释tty的意思。tty这个名字起源比较早,全称是TeleTYpewriter(电传打字机)。现在在Linux里的含义一般是指安装图形界面之前的那个黑色屏幕。一般的系统会提供7个tty,分别用Ctrl+Alt+F1~F7可以切换到。如果有图形界面,其中第七个会被用来显示图形。 从最近几个版本开始,EGUI的服务器和客户端必须显示在同一个tty里了。服务器启动之后,会把屏幕清空,直到某个用户程序启动,并向服务器发送了绘图请求,窗口才会出现在这个黑色屏幕上。但是服务器占用的那个tty已经被清空成黑色,也没有光标,所以为了输入启动用户程序的命令,必须打开另一个tty。