在 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的文档很少,基本是零文档,那没办法,想要探索的话只能是:动手!!!
从github下载kotlin native
cd kotlin-native
下载依赖包:
./gradlew dependencies:update
编译
./gradlew dist
至此,我们就得到了kotin的native编译器,它们在目录:./dist/bin。
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这个文件:
删除hello/src/main/kotlin下的所有文件,在hello/src/main/kotlin下创建文件Hello.kt,内容如下,这程序只打印了两个字:
修改 kotlin-native/settings.gradle,添加一行include ‘:hello’
上面的步骤中,我们编写了程序,并修改了主配置,添加了我们新建的项目。接下来,我们来编译这个程序。
打开命令行终端
cd kotlin-native/samples/hello
执行 ../gradlew build
此时会打印一堆东西,耐心等待,如果你上面的步骤没有错误,这里最终会打印:
右键点击:kotlin-native/samples/hello/build.gradle,选择run
观察控制台输出,如果出现如下提示,说明成功(注意:一定要有KtFile: Hello.kt这一行):
如果没有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,直接在命令行执行它即可,结果如下:
至此,我们的第一个kotlin native程序顺利执行。
背景
不久前有群友在讨论kotlin,就翻看了聊天记录,发现了kotlin native,能把kotin代码编译成本地可执行文件。就到kotlin的官方网站看了一下。觉得kotlin native确实很有潜力,能够零开销调用c代码,这比JNI要好很多。也许能把kotlin当做一个语法先进的c了。顺便说一下,我在2015年使用过一年的kotlin,用来做游戏服务器的开发,对kotlin的基本语法很熟悉了。如果kotlin能以很低的开销来做系统开发的话,这是我很乐意看到的。我前学了半年的swift,发现这货的运行开销很高,不是我想要的,现在有了kotlin native,我倒是想发掘一下,看看它究竟能干什么,希望他给的比我期望的更多。
现在kotlin native的文档很少,基本是零文档,那没办法,想要探索的话只能是:动手!!!
编译kotlin-native
从github下载kotlin nativecd 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程序顺利执行。
相关文章推荐
- 运行出第一个程序Hello World、第二个程序网页浏览器
- NDK入门(一) 在Android Studio中创建并运行第一个ndk程序hello world
- Android adt bundle 开发环境配置及第一个“Hello world”程序运行
- 如何用命令行编译、运行第一个java程序(Hello World!)
- Android adt bundle 开发环境配置及第一个“Hello world”程序运行
- 第一个可运行的PHP程序-从配置到HELLO WORLD
- [web开发] 如何在Mac OS上安装Apache Tomcat并运行你的第一个Servlet程序
- Ubuntu 12.04安装Go语言运行环境,第一个程序Hello world
- Skyeye模拟uClinux上运行的第一个程序:Hello World
- (原創) 第一个SystemC的程序:Hello World (C/C++) (SystemC) (IC Design)
- 运行第一个flex程序(2)
- ruby 学习_1 --第一个ruby程序,hello world
- 亲密接触Java手机程序设计(三):第一个Java手机程序--Hello World
- 运行第一个flex程序(3)
- 认识API编程机制,第一个Windows API程序----Hello World!
- 第一个DWR程序:Hello World
- 运行第一个flex程序(1)
- 我的第一个servlet程序终于可以运行了
- 第一个可以运行HLSL的DirectX程序
- 旧文重贴,悼念我的第一个电子邮箱:在同一个进程空间运行两个程序