您的位置:首页 > 其它

在 mac os 上运行 kotlin native 的第一个程序:hello world

2017-06-21 09:56 441 查看
原文链接:在 mac os 上运行 kotlin native 的第一个程序:hello world


背景

  不久前有群友在讨论kotlin,就翻看了聊天记录,发现了kotlin native,能把kotin代码编译成本地可执行文件。就到kotlin的官方网站看了一下。觉得kotlin native确实很有潜力,能够零开销调用c代码,这比JNI要好很多。也许能把kotlin当做一个语法先进的c了。

  顺便说一下,我在2015年使用过一年的kotlin,用来做游戏服务器的开发,对kotlin的基本语法很熟悉了。如果kotlin能以很低的开销来做系统开发的话,这是我很乐意看到的。我前学了半年的swift,发现这货的运行开销很高,不是我想要的,现在有了kotlin native,我倒是想发掘一下,看看它究竟能干什么,希望他给的比我期望的更多。

  现在kotlin native的文档很少,基本是零文档,那没办法,想要探索的话只能是:动手!!!


编译kotlin-native

从github下载kotlin native
cd kotlin-native
下载依赖包:

./gradlew dependencies:update
编译

./gradlew dist

  至此,我们就得到了kotin的native编译器,它们在目录:./dist/bin。


编写hello world

  kotlin-native自带了十来个例子,都是可以编译运行的,此刻,我们对kotlin的编译过程还不太熟悉,就先沿用例子中的编译方式。kotin-native本身是一个gradle项目,可以用idea直接打开这个目录,会自动识别项目类型。不要忘记安装kotin插件,这样idea才能识别kotlin的语法。如果你不使用idea,那你可以忽略它。

翻到kotlin-native/samples,复制socket目录,并命名为hello。
进入hello目录,保留build.gradle和main目录,删除其余文件。

修改hello/build.gradle如下,这里是告诉gradle要编译Hello.kt这个文件:
apply plugin: 'konan'
konanArtifacts {
Hello {

}
}


删除hello/src/main/kotlin下的所有文件,在hello/src/main/kotlin下创建文件Hello.kt,内容如下,这程序只打印了两个字:
import kotlinx.cinterop.*
fun main(args: Array<String>) {
println("Hello world")
}


修改 kotlin-native/settings.gradle,添加一行include ‘:hello’
include ':tensorflow'
include ':concurrent'
include ':hello'



编译方法1:命令行编译

  上面的步骤中,我们编写了程序,并修改了主配置,添加了我们新建的项目。接下来,我们来编译这个程序。

打开命令行终端
cd kotlin-native/samples/hello
执行 ../gradlew build

此时会打印一堆东西,耐心等待,如果你上面的步骤没有错误,这里最终会打印:
BUILD SUCCESSFUL

Total time: 20.522 secs



编译方法2:从idea编译

右键点击:kotlin-native/samples/hello/build.gradle,选择run

观察控制台输出,如果出现如下提示,说明成功(注意:一定要有KtFile: Hello.kt这一行):
KtFile: Hello.kt
:hello:build

BUILD SUCCESSFUL

Total time: 25.053 secs


如果没有KtFile: Hello.kt这一行,就需要给kotlin-native/samples/hello/build.gradle添加运行参数,方法是:

在idea右上角的“运行”图标的左侧,点击下拉选项,点击“edit configurations”,
在“Program arguments”后填写“build”。意思是告诉gradle执行build任务。
再次运行kotlin-native/samples/hello/build.gradle


运行

  编译出来的文件位于:kotlin-native/samples/hello/build/konan/bin,直接在命令行执行它即可,结果如下:
zhmt$ ./build/konan/bin/Hello.kexe
Hello world


至此,我们的第一个kotlin native程序顺利执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  kotlin native idea