Rust语言之HelloWorld

参考文档:

http://doc.crates.io/guide.html

1 什么是Cargo

相当于maven/ant之于java, automake之于c, Cargo是rust的项目管理工具。用 Cargo 做4件事情:

1) 配置管理

2) 下载项目依赖

3) 调用编译器rustc编译,发布程序

4) 总之开发rust的一揽子解决方案

当你安装了rust, cargo就随之安装了。

2 创建第一个rust程序HelloWorld

$ cargo new hello_world --bin

查看一下目录结构:

$ cd hello_world
$ tree .
.
├── Cargo.toml
└── src
    └── main.rs

1 directory, 2 files

编译一下,并运行之:

$ cargo build

$ ./target/debug/hello_world
Hello, world!

或者:

$ cargo run

Running `target/debug/hello_world`
Hello, world!

编译release版本:

$ cargo build --release

产生的程序:

target/release/hello_world

3 发布到服务器

我在开发机器上(Ubuntu14.04)上编译的,现在发布到RHEL6服务器,然后运行:

[root@vm-repo ~]# ./hello_world

./hello_world: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./hello_world)
./hello_world: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by ./hello_world)

很显然,我的RHEL6的GLIBC太旧了。查看一下:

[root@vm-repo ~]# strings /lib64/libc.so.6 |grep GLIBC_

...
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12

GLIBC_PRIVATE

4 升级服务器GLIBC(失败)

1) 下载glibc (http://ftp.gnu.org/gnu/libc/)

wget -c http://ftp.gnu.org/gnu/libc/glibc-2.22.tar.gz

2) 解压后安装

# tar zxf glibc-2.22.tar.gz
# cd glibc-2.22
# mkdir build
# cd build
# ../configure
# make -j4
# make install

...

checking for gawk... gawk

checking version of gawk... 3.1.7, ok
checking if gcc is sufficient to build libc... no
checking for nm... nm
configure: error:
*** These critical programs are missing or too old: as ld compiler
*** Check the INSTALL file for required versions.

看来RHEL6的gcc版本太低。需要升级gcc。太费劲,放弃。

5 直接在RHEL6上装rust (成功)

# curl -f -L https://static.rust-lang.org/rustup.sh -O
# sh rustup.sh

[root@vm-repo experiment]# rustc --version
rustc 1.2.0 (082e47636 2015-08-03)

然后重新创建hello_world:

# cargo new hello_world --bin
# cd hello_world
# cargo build --release
生成的 target/release/hello_world 可以运行!

================================================

更多内容请详细阅读

http://doc.crates.io/guide.html

Rust语言之HelloWorld的更多相关文章

  1. Rust语言之HelloWorld Web版

    Rust语言之HelloWorld Web版 下面这篇文章值得仔细研读: http://arthurtw.github.io/2014/12/21/rust-anti-sloppy-programmi ...

  2. 半个月使用rust语言的体验

    从第一次下载rust语言的编译器到今天刚好第14天. 简单说一下对这个语言的感觉吧. 一.性能 把以前用java写的一个中文地址切分的算法,用rust重新实现了一下(https://github.co ...

  3. Rust语言:安全地并发

    http://www.csdn.net/article/2014-02-26/2818556-Rust http://www.zhihu.com/question/20032903 Rust是近两年M ...

  4. Rust语言

    Rust语言 https://doc.rust-lang.org/stable/book/ http://www.phperz.com/article/15/0717/141560.html Rust ...

  5. 【转】对 Rust 语言的分析

    对 Rust 语言的分析 Rust 是一门最近比较热的语言,有很多人问过我对 Rust 的看法.由于我本人是一个语言专家,实现过几乎所有的语言特性,所以我不认为任何一种语言是新的.任何“新语言”对我来 ...

  6. Atitit.rust语言特性 attilax 总结

    Atitit.rust语言特性 attilax 总结 1. 创建这个新语言的目的是为了解决一个顽疾:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升.1 2. 不会 ...

  7. Rust语言——无虚拟机、无垃圾收集器、无运行时、无空指针/野指针/内存越界/缓冲区溢出/段错误、无数据竞争

    2006年,编程语言工程师Graydon Hoare利用业余时间启动了Rust语言项目.该项目充分借鉴了C/C++/Java/Python等语言的经验,试图在保持良好性能的同时,克服以往编程语言所存在 ...

  8. 5分钟APIG实战: 使用Rust语言快速构建API能力开放

    序言:Rust语言简介 参与过C/C++大型项目的同学可能都经历过因为Null Pointer.Memory Leak等问题“被” 加班了不知道多少个晚上.别沮丧,你不是一个人,Mozilla Fir ...

  9. 我持续推动Rust语言支持Windows XP系统

    前言 Rust好像长期以来不支持Windows XP系统.有不少用户发帖提议官方支持XP,基本上都被Rust官方开发人员明白的拒绝了.他们的对话大致上是以这种形式開始和结束的(当中乙方代表官方及其拥趸 ...

随机推荐

  1. sourcestress 问题解决方案

    描述:在Windows系统下,在保证GitHub上的账号和密码正确的情况下,在push时候,输入正确的账号和密码后,却是提醒无效的账户密码. 解决方法:在C:\Users\...\AppData\Lo ...

  2. Spring中@Transactional事务回滚(含实例详细讲解,附源码)

    一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除 ...

  3. 安卓高级1 -----Xutil3 和Picasso使用

    Xutils3 Xutils由于内部使用httpclient然而在安卓5.0谷歌发现httpclient出现不稳定的情况.于6.0完全弃用,所以作者升级到Xutils3替换原本网络模块 配置环境(St ...

  4. Netty 4源码解析:请求处理

    Netty 4源码解析:请求处理 通过之前<Netty 4源码解析:服务端启动>的分析,我们知道在最前端"扛压力"的是NioEventLoop.run()方法.我们指定 ...

  5. 浏览器加载和渲染html的顺序(html/css/js)

    最近在学习前端的技术,把html.js.css的基础知识看了看.感觉越看越觉得前端并不比后端容易,技术含量还是相当大的.今天突然想弄明白浏览器到底是怎么加载和渲染html的?html中的DOM.js文 ...

  6. 自定义Java注解的方式与应用

    注解的作用 Annotation(注解)是JDK 5.0引入的特性,它的基本作用就是修饰编程元素. 注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记.编译器.开发工具或其他程序可以用反射 ...

  7. jdbc批量插入

    分享牛,分享牛原创.有这样一个需求,文本文件中的数据批量的插入mysql,怎么用jdbc方式批量插入呢? jdbc默认提供了批量插入的方法,可能用一次就忘记了,这里做笔记记录一下jdbc批量插入吧. ...

  8. Swift基础之自定义PUSH和POP跳转动画

    之前用OC代码写过PUSH和POP的转场动画,闲来无事,将其转换成Swift语言,希望对大家有帮助,转载请注明.... 如何实现PUSH和POP的转场动画? 首先,创建一个NSObject的类,分别用 ...

  9. 【伯乐在线】100个高质量Java开发者博客

    本文由 ImportNew - 夏千林 翻译自 programcreek.欢迎加入翻译小组.转载请见文末要求. ImportNew注:原文中还没有100个.作者希望大家一起来推荐高质量的Java开发博 ...

  10. 详解EBS接口开发之供应商导入(补充)--错误信息处理

    check reject details on records of AP_SUPPLIER_INT SELECT s.parent_table,s.reject_lookup_code,S.LAST ...