Hello, World!
本章节包含如何在非IDE的命令行环境下运行你的第一个 GS 程序、GS driver 的常用启动参数、GS driver shell 的常用方法等内容。面向初次运行 GS 程序、不了解GS driver 相关概念或操作的同学。阅读完本章节后,应当能够使用命令行运行 GS 程序、使用 shell 调用函数、操作数据、查询函数等。
注意:本教程假定你熟悉命令行操作。
1. driver 概念
driver 实际指代安装过程中我们安装的可执行文件,windows下为 gs.exe 其他系统下为 gs。它是 GS 语言的驱动程序,是用于编译运行 .gs 文件的解释器程序/在 driver 中我们可以动态的编译程序并执行,查看函数、宏、枚举的说明,查看当前内存占用信息,手动调用函数,调用分析工具等。
2. drvier 启动
查看安装过程中创建的/helloworld/src/helloworld.gs 项目目录下的 GS 源码,其代码如下所示:
public void main()
{
write("hello, welcome to g-bits!\n");
write("This is a language powered by g-bits!\n");
return;
}
main();
示例 2-1:gip init 初始化的默认 helloworld.gs 源码
我们用任意文本编辑器打开,并修改源码如下:
void main()
{
write("Hello,World!\n");
return;
}
main();
示例 2-2:一 个打印 Hello,World!的程序
保存文件,并使用命令行打开至当前 helloworld 项目的的根目录下,即\helloworld\路径下,运行如下命令编译并执行程序:
.\bin\gs.exe /r ./ /e ./src/helloworld.gs
此时可以看到终端窗口中字符串 Hello, world!被打印出来,同时来到了 driver 的 shell中,如下图所示:

好的,🎊恭喜你运行了属于你的第一个GS 程序。现在让我们暂时离开控制台窗口,了解下driver 常用的启动参数。
3.driver 常用启动参数
下面将介绍一些常用的启动参数,更详细的启动参数见drvier 启动参数。
/r设置根目录/e启动脚本/eq启动脚本,在脚本执行完成后不进入shell 而是退出/m可以带多个预加载的脚本,如果有多个用逗号隔开(,)--mount挂载目录/D预定义宏--require||--require all导入内置插件(用于兼容旧代码,详细说明见import章节中的相关说明)/c1开启命令行交互模式- --enable-jit [0,1,2] 启用 jit。0 代表解释执行,1 代表 asmjit,2代表 llvmjit。
其中/c1 常用于linux系统中,windows下是默认开启的。
此时再看我们之前的启动命令:
.\bin\gs.exe /r ./ /e ./src/helloworld.gs
实际是将启动 driver 并将根目录设置在当前目录,并编译运行 helloworld.gs 启动脚本,接下来让我们简单尝试下,预加载脚本,挂载目录,预定义宏启动参数。
在helloworld/src/目录下让我们额外创建一个preload.gsh,内容如下:
write("load preload.gsh\n");
示例 3-1:预加载过程简单输出
调整helloworld/src/目录下 helloworld.gs 源码如下:
public void main()
{
write("Hello,World!\n");
write(lucky_num);
return;
}
main();
示例 3-3:添加宏展开代码的 helloworld.gs 源码
完成调整后目录结构如下:
helloworld
├─ vscode Vscode 配置文件
├─ src
| ├─preload.gsh 预加载脚本
| ├─helloworld.gs GS 源码
├─ .gitignore git 忽略配置文件
├─ package.json GIP 的包管理配置文件
├─ README.md 项目说明文档
同样在项目根目录helloworld/下以如下命令启动程序:
.\bin\gs.exe /r ./src/ /e ./helloworld.gs /m /preload.gsh --mount ./src::/source /D lucky_num=888
命令中我们以启动参数做了如下操作:
-
/r ./src/将helloworld/src/设为 driver 的根目录 -
/e ./helloworld.gs将 driver 启动脚本设为 helloworld.gs -
/m /preload.gsh预加载 preload.gsh 脚本 -
--mount ./src::/source将 /src 挂载为 /source 目录 -
/D lucky_num=888预定义宏,将 lucky_num 宏定义为数字 888 -
--require json导入 json 插件
运行的结果如下图:

可以看到源码中的
-
preload.gsh 预加载脚本
-
lucky_num:被正确宏展开为了数字888
此时不要关闭终端,让我们在 shell 中输入如下命令
'get_system_info()