洛书编程语言内核编译和使用教程

本文目的和学习目标

目的

本文展示了如何编译和使用洛书编程语言内核。

学习目标

  1. 学会使用lpt拉取内核源码
  2. 学会使用GCC工具链中的make来编译内核
  3. 意识到洛书的本体是内核,交互式界面也依靠调用内核工作

前置知识

洛书内核一般随版本而发表,所以仓库中不支持使用install命令直接下载编译好的内核,但是支持使用source命令拉取内核源码并编译。stdlib系列模块也是如此。

使用lpt拉取内核源码

lpt提供了源码拉取功能,使用source命令。拉取源码的命令如下

losu -r source losu_core

之后工作目录下就会出现一个名为losu_core的目录,里面即是洛书内核源码。
lpt会自动处理平台和架构信息。当然,这依赖于lpt的配置文件。

使用make编译内核源码

在losu_core目录下打开命令行,调用make

make

Linux系统直接输入这行命令即可。如果是Windows下的mingw32编译器,make的名称发生了变化,这时应输入

mingw32-make

其他实现中make的调用方式视具体而定。
之后make会查找losu_core目录下的makefile文件,根据其中的配置信息编译内核。最后生成的内核文件是名为为libeasylosu的动态库。在Linux系统下的具体名称为libeasylosu.so,在Windows下的具体名称为libeasylosu.dll。

内核的使用方式

替换洛书交互界面的内核版本

洛书交互界面,即在命令行中输入losu运行的那个文件,本质上只是个用户友好的操作接口,它依然靠调用洛书内核工作。
在洛书的工作根目录中可以发现一个洛书内核。将自己编译的内核替换掉这个内核即可。
至于为何要替换掉内核,因为在自己机器上编译的内核可能比官方发布的运行速度快,但只是可能,并且一般快不了多少。

在编译模块时链接到内核

洛书模块的编译过程中,除了包含els.h文件,就是链接洛书内核。洛书内核本质上是一个动态库,模块运行时要使用洛书C API,本质上也是调用内核中的代码。
不建议将内核编译静态编译入模块中,这会带来严重的内核版本间不兼容问题。使用链接动态库的方式,可以保证在一个洛书脚本运行过程中调用的内核代码只有一份版本。

实现洛书嵌入C/C++工程

前文说到,洛书交互界面的本质也是调用洛书内核。换言之,洛书内核才是洛书编程语言的本体。在C/C++项目中使用洛书内核,调用vm_dostring等洛书C API,就可以实现洛书嵌入C/C++项目。

关于编译过程中的warning

编译过程中,gcc可能会报一些warning,尤以Windows最多(小小吐槽一下)。这是因为内核代码中使用了部分GNU扩展函数,但这些warning并不影响内核的可靠性。
实际上,本文介绍的方法,也是洛书开发者日常编译洛书内核的方法,只是他不用拉取源码而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值