1.1 Rust安装
从今天起,坚持每天学习10分钟Rust...这是一个刚兴起几年的语言,希望深入地进行学习,为什么呢,因为以下这些让人辛酸的理由.....
最开始学习的是C++,没学太懂,之后又学了C,这时还完全对计算机语言没什么概念
然后又学习了操作系统原理、汇编、编译原理、算法与数据结构,书看了,书后面的练习题也做了,自测考试,汇编60分,编译原理实现了一个加减乘除的小程序,算法与数据结构89分,满分都是100分,后来不学了,忘光了,这时大概有些明白操作系统是个什么东西
再后来学习的.net,做了一个小博客网站,能发文章能评论,这中间还学习了一个VB,这个语言做window桌面开发很方便,后来觉得总是拖拉组件没意思,也就没再学习了
然后有些迷茫了……也无法分区这些语言的差别
然后接触到了Java,此时Java刚刚宣布可以跨平台不久,认为这是个不错的选择,深入学习了两年,工作用了三年,公司的平台是花巨资从IBM买的架构,我前两年没事就研究这个,大概在第二年时终于把主要环节弄明白了,然后自己模仿写了个小架构,此时突然有些明白了软件是用来干什么的了,大学的专业是软件工作,至到此时才理解到,软件是用来满足人们或者说市场的需求的;此时,意识到了,做程序员,就要追求代码的精益求精,要懂得规范与标准,做项目有一个好的平台架构是多么的重要,但又感觉发现的太晚了,因为自己之前并没有追求代码的精益求精,周围的人也没人关注这个东西,大家空闲时都打打游戏、看看电影或者想着怎么把个妹子之类的,感觉此时自己距离架构师的距离是十万八千里之远……此时Java还没火,个人感觉前途一片灰暗
既然架构师这条路不好走,我选择把知识面拓展宽一些,转而去学习oracle 成为了一个oracle dba,从小弟开始,工资没涨反而降了,开始了Oracle的学习
然后开始接触运维,做了一年后,自动化运维又火了,又学了python,辅助运维
之后,mysql也火了,好多公司开始上mysql,然后又学习了mysql
之后Go语言也火了,又学习了Go
现在tidb也很火,又开始研究tidb
……
总是在一个东西火的时候去学习,学差不多之后发现这东西已经大众化了,只能说是,眼界不行,视野不开阔、境界高度不够;
但我已经在不断挑战自己了,我初次学习C++才刚学会打字,刚接触电脑没多久,还不知道word文档还有不同字体这一说,只会打开一个word打几个字,那时看C++就跟看天书一样,我去接触尝试了我之前完全没有接触过的东西,应该算是挑战,尽管它就像小时候背的诗歌一样,完全不明白其中的含义;就像我之前上Oracle培训的时候,那个水平很高的讲师讲完一个update语句在内存中数据库块及进程流转过程,我完全能明白并且复述这个过程,但讲师神秘一笑地问我,“你懂了吗?”,我说,“我懂了”,他接着肯定地说,“你不懂!” ,只是背概念和浅显地理解,那不叫懂!
此时明白,如果你是一个不断挑战自己的人,那么你就不要把自己放在一个安逸的环境中,在你可以奋斗的年龄里,你应该去竞争激烈、平台巨大、足够前沿的公司里,要走在世界的前列!
我就这么稀里糊涂地渡过了十载春秋……总追不上时代的步伐,希望看到这篇文章的人能从中得到一些东西,少走一些弯路
开始Rust的学习之旅了……
安装
curl https://sh.rustup.rs -sSf | sh # vim /etc/profile export PATH=$PATH:/root/.cargo/bin
非root用户安装配置
export PATH=~/.cargo/bin:$PATH
# rustc --version rustc 1.31.1 (b6c32da9b 2018-12-18)
苹果电脑环境变量
cd
source .bash_profile
73xt@192 ~ % source .bash_profile 73xt@192 ~ % which rustc /Users/73xt/.cargo/bin/rustc
在苹果电脑里,执行上面的sh会自动向.bash_profile中添加以下一行,没有时,手工添加
73xt@192 ~ % cat .bash_profile|grep cargo . "$HOME/.cargo/env"
验证
mkdir ~/projects cd ~/projects mkdir hello_world cd hello_world
# cat main.rs
fn main() {
println!("Hello, world!");
}
# rustc main.rs # ls main main.rs # ./main Hello, world!
rust的编译需要依赖glib库,但Linux系统6与7之前的glib库变化比较大,因此,rust编译出的可执行文件,通常不能跨linux的大版本执行
centos7上编译后在centos6上执行,报错如下
$ ./main
./main: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./main)
关于版本的解决方案:
在开发环境中使用docker部署与线上对应的系统版本,在docker中编译后再上线
idea中配置rust插件
------------------------------------------------------
在电脑中补充安装
rustup component add rls rust-analysis rust-src
idea 安装rust,toml插件
下面两个目录是自动填充的,需要将rust安装到启动idea的目录
更换清华数据源:~/.cargo目录下创建config文件
tanpengfei3@bage:~/.cargo$ cat config [source.crates-io] registry = "https://github.com/rust-lang/crates.io-index" replace-with = 'ustc' [source.ustc] registry = "https://mirrors.ustc.edu.cn/crates.io-index"
ubuntu中创建新用户并添加管理员权限
rust 源码安装
环境ubantu系统,用户ai
检查依赖包
sudo su - root
apt install g++
python 确认python环境为2.7,否则安装 apt install python2.7
简易安装 --------------------------------------------------------------------------------- sudo apt install python3 # version 3.7.3-1, or sudo apt install python # version 2.7.16-1 sudo apt install python-minimal # version 2.7.16-1 更改默认值,python默认为Python2,现在修改为Python3,谁的值高谁优先 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
apt install make cmake
apt install curl git
apt install libssl-dev
apt install pkg-config
sudo apt install llvm
sudo apt-get install re2c
re2c --version
re2c 1.3
切换到普通用户
git clone https://github.com/ninja-build/ninja.git
cd ninja/
./configure.py --bootstrap
sudo cp ninja /usr/bin/
下载软件
wget https://static.rust-lang.org/dist/rustc-1.50.0-src.tar.gz
创建安装目录
sudo mkdir -p /opt/app/rust/rust50
sudo chown -R ai.ai /opt/app/rust
解压安装
su - root
注意,这一步使用root用户安装
tar -xvf rustc-1.50.0-src.tar.gz
mv rustc-1.50.0-src /opt/soft/
cd rustc-1.50.0-src/
cp config.toml.example config.toml
修改安装目录到新的位置,并允许进行扩展安装
vim config.toml
# Instead of installing to /usr/local, install to this path instead.
prefix = "/opt/app/rust/rust50"
extended = true
sudo ./x.py build && ./x.py install
cargo需要另行安装:
$ ./x.py install cargo
vim /etc/profile
export PATH=$PATH:/opt/app/rust/rust50/bin