当前位置: 首页 > news >正文

网站权重难做方便做简笔画的网站或软件

网站权重难做,方便做简笔画的网站或软件,花生壳免费域名申请,营销手段有哪些方式提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ubuntu20.04搭建RUST开发环境并与C语言交互 前言开战一、确认环境版本二、环境搭建三、hello world!四、跟c语言进行交互1.rust调用C静态库2.C调用rust库 总结参考…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

ubuntu20.04搭建RUST开发环境并与C语言交互

  • 前言
  • 开战
    • 一、确认环境版本
    • 二、环境搭建
    • 三、hello world!
    • 四、跟c语言进行交互
      • 1.rust调用C静态库
      • 2.C调用rust库
  • 总结
  • 参考


前言

开始学习rust,从网上扒资料搭建开发环境。后续再跟OpenHarmony-RISCV结合。


开战

一、确认环境版本

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、环境搭建

root@znvhwd:/home/ptg/rust# curl --proto ‘=https’ --tlsv1.2 https://sh.rustup.rs -sSf | sh
curl: (35) OpenSSL SSL_connect: 连接被对方重设 in connection to sh.rustup.rs:443
root@znvhwd:/home/ptg/rust# ls
root@znvhwd:/home/ptg/rust# sudo apt-get install git
正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
git 已经是最新版 (1:2.25.1-1ubuntu3.13)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 31 个软件包未被升级。
root@znvhwd:/home/ptg/rust# curl --proto ‘=https’ --tlsv1.2 https://sh.rustup.rs -sSf | sh
curl: (35) OpenSSL SSL_connect: 连接被对方重设 in connection to sh.rustup.rs:443

获取rustup安装脚本失败,有资料说是没安装git导致,但环境中实际有git。大概率还是本地虚拟机网络的问题。
经排查修改DNS即可:Ubuntu修改DNS的方法

  1. 编辑 /etc/resolv.conf 文件
    sudo vim /etc/resolv.conf
  2. 加入以下代码
    nameserver 114.114.114.114
    nameserver 8.8.8.8

又遇新坑
在这里插入图片描述
不知道啥原因,曲线救国了。
浏览器打开https://sh.rustup.rs,直接下载到rustup-init.sh。然后“./”执行即可。
在这里插入图片描述
多灾多难。。
https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init
再次尝试,下载rustup-init。然后“./”执行。
报错:

error: error decoding response body: operation timed out

解决:

RUSTUP_DIST_SERVER=‘https://mirrors.ustc.edu.cn/rust-static’
RUSTUP_UPDATE_ROOT=‘https://mirrors.ustc.edu.cn/rust-static/rustup’

在这里插入图片描述
终于下完了,引用环境变量(环境变量已经默认写入到~/.bashrc)

source ~/.bashrc

试用:cargo
在这里插入图片描述
搞定。

三、hello world!

root@znvhwd:/home/ptg/rust# cargo new myos
Creating binary (application) myos package
note: see more Cargo.toml keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
root@znvhwd:/home/ptg/rust# ls
main.rs myos rustup-init rustup-init.sh
root@znvhwd:/home/ptg/rust# cd myos
root@znvhwd:/home/ptg/rust/myos# cargo run
Compiling myos v0.1.0 (/home/ptg/rust/myos)
Finished dev profile [unoptimized + debuginfo] target(s) in 0.20s
Running target/debug/myos
Hello, world!
root@znvhwd:/home/ptg/rust/myos# ls
Cargo.lock Cargo.toml src target
root@znvhwd:/home/ptg/rust/myos#
root@znvhwd:/home/ptg/rust/myos#
root@znvhwd:/home/ptg/rust/myos# cd src/
root@znvhwd:/home/ptg/rust/myos/src# ls
main.rs
root@znvhwd:/home/ptg/rust/myos/src# cat main.rs
fn main() {
println!(“Hello, world!”);
}

执行上面的命令应该是直接下载了一个git项目。

四、跟c语言进行交互

在Rust中调用C语言的代码需要以下几个步骤:

  1. 编写或获得C语言的代码。
  2. 创建Rust的外部函数接口(FFI)。
  3. 使用Rust的unsafe块调用C函数。

1.rust调用C静态库

参考 Rust调用C程序的实现步骤
编译得到一个C语言的静态库

/*swap.c*/
#include "stdint.h"int swap(int32_t* a, int32_t* b)
{int32_t tmp = *a;*a = *b;*b = tmp;return 0;
}

gcc -c swap.c
ar rcs libswap.a swap.o

在Rust中创建一个外部函数接口来使用这个库。
Cargo.toml文件中添加一个build.rs脚本以及libc依赖:

[package]
name = "myos"
version = "0.1.0"
edition = "2021"
build = "build.rs"[dependencies]
libc = "0.2"[build-dependencies]
cc = "1.0"

在build.rs脚本(笔者将其放在了项目根目录下)中告诉cargo如何构建C库

/*build.rs*/
extern crate cc;fn main()
{cc::Build::new().file("swap.c").compile("libswap.a");
}

创建Rust的外部函数接口,可以
修改hello rust的main.rs

/*main.rs*/
extern crate libc;extern "C"
{fn swap(a: *mut i32, b: *mut i32);
}fn main()
{println!!!!!!!!!!!("hello,rust!");let mut x = 5;let mut y = 10;unsafe{swap(&mut x as *mut i32, &mut y as *mut i32);}println!("x: {}, y: {}", x, y);
}

在这里插入图片描述
报错:

warning: spurious network error (3 tries remaining): [35] SSL connecterror (Recv failure: Connection reset by peer)
warning: spuriousnetwork error (3 tries remaining): [28] Timeout was reached

应该还是网络的问题。。
尝试wget 对应文件,SSL问题。
查了半天终于找到了解决方法

root@znvhwd:/home/ptg/rust/myos# cd ~/.cargo
root@znvhwd:~/.cargo# ls
bin config env registry
root@znvhwd:~/.cargo# cat config
[http]
check-revoke = false
root@znvhwd:~/.cargo# root@znvhwd:/home/ptg/rust/myos# cd ~/.cargo
root@znvhwd:~/.cargo# ls
bin config env registry
root@znvhwd:~/.cargo# cat config
[http]
check-revoke = false
root@znvhwd:~/.cargo# vim config

修改配置文件,应该是换了源

[http]
check-revoke = false
[source.crates-io]
replace-with = 'ustc'
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"

在这里插入图片描述
终于搞定了。

2.C调用rust库

参考 C语言和Rust语言的互相调用(1)(C调用Rust)

总结

没啥 ,找资料照做,遇到问题解决问题即可。

参考

https://zhaoseaside.blog.csdn.net/article/details/134484039
https://blog.csdn.net/fittec/article/details/137204059
https://zhuanlan.zhihu.com/p/687515644
https://www.jb51.net/program/307143aaq.htm
https://blog.csdn.net/phthon1997/article/details/126469708

http://www.yayakq.cn/news/968029/

相关文章:

  • 《网站平台建设》课程实训傻瓜式在线做网站
  • 做推广的网站需要注意什么it运维之道
  • 利用赞赏码做网站收款怎么创建网址
  • 公司网站的建设网店运营怎么学
  • 英文网站seo如何做wordpress生成标签页
  • 住建局建设工程质量监督站怎么删除wordpress主题
  • 做网站的作品思路及步骤seo优化标签
  • 缩我短网址生成网站优化网站建设
  • 井陉网站建设局域网站建设银行信用卡
  • 影视传媒网站设计推荐国外网站设计
  • 家政服务网站开发的依据建筑网站建设方案
  • 网站建设费缴税营销手机网站
  • 营销型定制网站wordpress 标签html代码
  • 网站优化检测wordpress商品分类
  • 小型企业网站开发wordpress显示摘要
  • 望牛墩东莞网站建设淘宝运营跟做网站哪种工资高
  • 哪些网站是wordpress做图哪个网站素材多
  • 做网站一般多少钱素材天下网站
  • 怎样建设自己的网站重庆市建设工程信息网人员公示
  • 宿迁做网站哪家好政务门户网站建设规范
  • 建设厅质监总站网站晚上必看的正能量网站app
  • 手工艺品网站建设侧胡顺珲春市建设局网站是多少
  • 企业开源建站系统php猎奇源码 织梦新闻视频图片八卦娱乐趣事资讯门户网站模板
  • 品牌型网站建设特点上海市工程咨询协会
  • 电商网站设计内容校园网站首页模板
  • 做与不做赞美网站wordpress删除自定义栏目
  • 如何看网站是谁做的台州临海市建设局网站
  • 浙江省建设厅官方网站您的网站对百度设置了ip封禁
  • 网站寄生虫怎么做湖州做网站建设的公司
  • O2O网站建设需要多少钱网络运维工程师和网络工程师