Ubuntu系统下的第一个console程序

Posted draweye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu系统下的第一个console程序相关的知识,希望对你有一定的参考价值。

进入自己喜欢的目录,前面步骤和windows基本一致,只简单描述下

执行 dotnet new

4f0ccf113d5e4880a916e9512204bc46

然后执行 dotnet restore

58e4cf8bb64f434795d2c4b0b1c9902c

然后执行 dotnet run

0cd47137c039497886ce3474a12df347

第一次未编译,会自动编译,然后可以看到程序已经成功执行了。

编译后会生成bin的目录,具体内容如下

b6a4836c8cae44d6983f9e0de97e3fb7

可以看到在bin/Debug/dnxcore50/ubuntu.14.04-x64目录下生成可执行的helloworld文件,可以直接执行

9593dbc026574750891abd9cdd15cfcb

是不是帅呆了,比以前mono来的给力多了吧。不过精彩的还在后面。

手动编译

先删除刚才编译好的bin目录 rm -rf bin

执行命令 dotnet build --native 或者 简写的 dotnet build -n

e6c29a554f464cb48d052d5220456930

然后看看都输出了什么内容

ll -R bin

23440fb4fcc54532bc1c86edd81289f6

注意到没有,在bin/Debug/dnxcore50/ubuntu.14.04-x64/下多了一个native的目录,里面只有一个helloworld的文件。

dotnet编译成了linux的native文件,不需要安装dotnet环境就可以执行。(没仔细研究,应该是将所需的环境都编译到了此文件中,可以看到一句hello world的文件大小就1M多了)

测试中将此文件copy到了另一个刚装好的centos7上,运行正常。

 

后续补充:
编译为linux的native以后,main方法的args参数会收到运行的命令
上例中用dotnet run运行时,args不会收到参数
在bin/Debug/dnxcore50/ubuntu.14.04-x64目录运行 ./helloworld,args也不会收到参数
但是到bin/Debug/dnxcore50/ubuntu.14.04-x64/native目录下运行 ./helloworld,args会收到参数
args[0]="./helloworld"
不知道这是不是个bug,以后会不会解决
 
这个问题发现的比较偶然,因为去玩了下core的sample,DotnetBot才发现的。
 
参考文档:

以上是关于Ubuntu系统下的第一个console程序的主要内容,如果未能解决你的问题,请参考以下文章

Macbook Air装Mac os和Ubuntu 16 双系统

Ubuntu16.04 安装Tensorflow-CPU

关于Ubuntu手机,你知道的和不知道的

腾讯云CMQ消息队列在Linux环境下的使用

Ubuntu安装问题

查看ubuntu 各系统的内核版本