国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

OpenHarmony 4.0 的 Rust 開發(fā)

系統(tǒng) OpenHarmony
OpenHarmony為了集成C/C++ 代碼和提升編譯速度,使用了GN + Ninja的編譯構建系統(tǒng)。GN的構建語言簡潔易讀,Ninja的匯編級編譯規(guī)則直接高效。

想了解更多關于開源的內容,請訪問:

51CTO 鴻蒙開發(fā)者社區(qū)

https://ost.51cto.com

背景

Rust是一門靜態(tài)強類型語言,具有更安全的內存管理、更好的運行性能、原生支持多線程開發(fā)等優(yōu)勢。Rust官方也使用Cargo工具來專門為Rust代碼創(chuàng)建工程和構建編譯。 OpenHarmony為了集成C/C++ 代碼和提升編譯速度,使用了GN + Ninja的編譯構建系統(tǒng)。GN的構建語言簡潔易讀,Ninja的匯編級編譯規(guī)則直接高效。 為了在OpenHarmony中集成Rust代碼,并最大程度發(fā)揮Rust和OpenHarmony中原有C/C++ 代碼的交互性,采用GN作為統(tǒng)一構建工具,即通過GN構建Rust源碼文件(xxx.rs),并增加與C/C++互操作、編譯時lint、測試、IDL轉換、三方庫集成、IDE等功能。同時擴展gn框架,支持接口自動化轉換,最大程度簡化開發(fā)。

基本概念

術語

描述

Cargo

Cargo是Rust官方使用的構建工具,允許Rust項目聲明其各種依賴項,并確保您始終獲得可重復的構建。

crate

crate是一個獨立的可編譯單元。

Lint

Lint是指出常見編程錯誤、錯誤、樣式錯誤和可疑結構的工具。可以對程序進行更加廣泛的錯誤分析。

配置規(guī)則

OpenHarmony提供了用于Rust代碼編譯構建的各類型GN模板,可以用于編譯Rust可執(zhí)行文件,動態(tài)庫和靜態(tài)庫等。各類型模板說明如下:

GN模板

功能

輸出

ohos_rust_executable

rust可執(zhí)行文件

rust可執(zhí)行文件,不帶后綴

ohos_rust_shared_library

rust動態(tài)庫

rust dylib動態(tài)庫,默認后綴.dylib.so

ohos_rust_static_library

rust靜態(tài)庫

rust rlib靜態(tài)庫,默認后綴.rlib

ohos_rust_proc_macro

rust proc_macro

rust proc_macro庫, 默認后綴.so

ohos_rust_shared_ffi

rust FFI動態(tài)庫

rust cdylib動態(tài)庫,給C/C++模塊調用,默認后綴.so

ohos_rust_static_ffi

rust FFI靜態(tài)庫

rust staticlib庫,給C/C++模塊調用,默認后綴.a

ohos_rust_cargo_crate

三方包Cargo crate

rust三方crate,支持rlib、dylib、bin

ohos_rust_systemtest

rust系統(tǒng)測試用例

rust可執(zhí)行系統(tǒng)測試用例,不帶后綴

ohos_rust_unittest

rust單元測試用例

rust可執(zhí)行單元測試用例,不帶后綴

ohos_rust_fuzztest

rust Fuzz測試用例

rust可執(zhí)行Fuzz測試用例,不帶后綴

配置Rust靜態(tài)庫示例

該示例用于測試Rust可執(zhí)行bin文件和靜態(tài)庫rlib文件的編譯,以及可執(zhí)行文件對靜態(tài)庫的依賴,使用模板ohos_rust_executable和ohos_rust_static_library。操作步驟如下:

  1. 創(chuàng)建build/rust/tests/test_rlib_crate/src/simple_printer.rs,如下所示:
//! simple_printer

/// struct RustLogMessage

pub struct RustLogMessage {
    /// i32: id
    pub id: i32,
    /// String: msg
    pub msg: String,
}

/// function rust_log_rlib
pub fn rust_log_rlib(msg: RustLogMessage) {
    println!("id:{} message:{:?}", msg.id, msg.msg)
}

創(chuàng)建build/rust/tests/test_rlib_crate/src/main.rs,如下所示:

//! rlib_crate example for Rust.

extern crate simple_printer_rlib;

use simple_printer_rlib::rust_log_rlib;
use simple_printer_rlib::RustLogMessage;

fn main() {
    let msg: RustLogMessage = RustLogMessage {
        id: 0,
        msg: "string in rlib crate".to_string(),
    };
    rust_log_rlib(msg);
}

配置gn腳本build/rust/tests/test_rlib_crate/BUILD.gn,如下所示:

import("http://build/ohos.gni")

ohos_rust_executable("test_rlib_crate") {
  sources = [ "src/main.rs" ]
  deps = [ ":simple_printer_rlib" ]
}

ohos_rust_static_library("simple_printer_rlib") {
  sources = [ "src/simple_printer.rs" ]
  crate_name = "simple_printer_rlib"
  crate_type = "rlib"
  features = [ "std" ]
}

執(zhí)行編譯得到的可執(zhí)行文件,運行結果如下:

./build.sh --product-name rk3568 --build-target build/rust/tests:tests  --no-prebuilt-sdk
hdc_std.exe shell mount -o rw,remount /
hdc_std.exe shell file send test_dylib_crate /data/local/tmp
hdc_std.exe file send libsimple_printer_dylib.dylib.so /system/lib

hdc_std.exe shell
# cd /data/local/tmp
# chmod +x test_dylib_crate
# ./test_dylib_crate
id:0 message:"string in rlib crate"

配置Rust應用系統(tǒng)庫示例

增加依賴:

// GN 里增加依賴
ohos_rust_executable("test_dylib_crate") {
  sources = [ "src/main.rs" ]
  deps = [ ":simple_printer_dylib" ]
  # 增加外部依賴
  external_deps = [ "hilog:hilog_rust" ]
}

// bundle.json 里增加依賴
"components": [
  "hilog"
],

增加調用:

extern crate simple_printer_dylib;

use simple_printer_dylib::rust_log_dylib;
use simple_printer_dylib::RustLogMessage;
//! 增加引用
use std::ffi::{ c_char, CString };
use hilog_rust::{hilog, info, HiLogLabel, LogType};

const LOG_LABEL: HiLogLabel = HiLogLabel {
    log_type: LogType::LogCore,
    domain: 0xD002220, 
    tag: "TEST_RUST",
};

fn main() {
    let msg: RustLogMessage = RustLogMessage {
        id: 0,
        msg: "string in rlib crate".to_string(),
    };
    rust_log_dylib(msg);
    //! 增加調用
    info!(LOG_LABEL, "Fnished enable all keys.");
}

運行測試:

// 運行
# ./test_dylib_crate
id:0 message:"string in rlib crate"

// 查看hilog
# hilog | grep Fnished
08-17 05:14:18.121 29293 29293 I C02220/TEST_RUST: Fnished enable all keys.

注意:rust和openharmony其他開源代碼可以混合使用,如rust可以生成C/C庫,給其他C/C應用使用,反之C/C++庫也可以給rust應用調用

總結

  • OpenHarmony已經全面支持的rust開發(fā),一些工具部件如hilog也有對應的rust版本。
  • 社區(qū)文檔:https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-build-rust-compilation.md。
  • 社區(qū)樣例:https://gitee.com/openharmony/build rust目錄下有各種樣例。

想了解更多關于開源的內容,請訪問:

51CTO 鴻蒙開發(fā)者社區(qū)

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 鴻蒙開發(fā)者社區(qū)
相關推薦

2024-05-14 08:33:57

Native API鴻蒙工具

2023-10-27 06:33:14

鴻蒙開發(fā)套件

2024-03-15 09:32:07

應用開發(fā)鴻蒙4.0-Releas

2023-04-21 15:54:08

應用開發(fā)鴻蒙

2022-10-12 15:00:02

設備開發(fā)應用開發(fā)

2022-03-02 16:08:31

Harmony應用開發(fā)鴻蒙

2023-08-07 15:42:25

ArkUI-X鴻蒙

2022-04-01 15:54:01

DHCP網絡協議開發(fā)板

2024-06-17 09:00:08

2022-01-21 21:22:24

OpenHarmon操作系統(tǒng)鴻蒙

2024-04-09 09:34:36

鴻蒙系統(tǒng)燒錄操作系統(tǒng)

2015-09-22 11:04:24

藍牙4.0開發(fā)

2023-05-30 14:50:20

界面開發(fā)鴻蒙

2023-09-25 15:30:14

云原生云計算

2024-04-01 11:43:51

Rust開發(fā)插件

2022-10-24 14:54:29

LWIP協議鴻蒙

2022-11-04 14:58:59

應用開發(fā)鴻蒙

2022-09-22 15:23:40

設備開發(fā)鴻蒙

2022-10-25 14:51:11

設備開發(fā)鴻蒙
點贊
收藏

51CTO技術棧公眾號

国产精品免费看久久久香蕉| 97伦理在线四区| www免费网站在线观看| 国产日韩亚洲欧美综合| 久久精品一二三区| 国产精品毛片久久| 久久久天堂国产精品女人| 国内在线视频| 欧美三级韩国三级日本一级| 91九色porny在线| 国产精品电影一区二区三区| 真人抽搐一进一出视频| 九色综合狠狠综合久久| 欧美精品123| 亚洲激情国产| 97人人澡人人爽| 99热国内精品| 91精品在线播放| 97精品视频| 成人午夜两性视频| 久久神马影院| 日韩av大片免费看| 亚欧日韩另类中文欧美| 91精品国产日韩91久久久久久| 国产原创av在线| 色婷婷综合激情| www.av在线播放| 欧美日韩国产精品成人| 看黄网站在线| 亚洲高清一二三区| 99视频精品在线| 咪咪色在线视频| 91精品国产自产在线观看永久∴ | 精品久久久久中文字幕小说 | 欧美xnxx| 精品国产凹凸成av人导航| 中文字幕在线观看播放| 精品国产成人在线影院 | 在线视频一区二区三区| 日本啊v在线| 黄网站色欧美视频| 瑟瑟在线观看| 日韩欧美123| 日本国产一区| 国产成人福利网站| 日韩亚洲国产精品| 17c丨国产丨精品视频| 欧美精彩视频一区二区三区| 色综合久久中文综合久久97| 久久艳妇乳肉豪妇荡乳av| 奇米精品一区二区三区在线观看| 9999在线观看| 91丨九色丨蝌蚪丨老版| 自拍偷拍精选| 色老综合老女人久久久| www国产在线观看 | 国产一级免费在线观看| 精品日韩一区二区三区| 韩国一区二区三区视频| 国产欧美精品一区二区三区介绍 | 欧美久久久久| 麻豆md0077饥渴少妇| 久久综合九色综合97婷婷| 成视人a免费观看视频| 欧美丝袜丝交足nylons图片| 亚洲精品mv| 国产精品成人在线| 麻豆精品视频在线| 日本成人免费| 欧美成人在线直播| 日韩电影毛片| 国产精品免费看久久久香蕉| 男女男精品网站| gay视频丨vk| 亚洲精品久久视频| 日韩在线理论| 你真棒插曲来救救我在线观看| 亚洲高清视频在线| 亚洲妇女成熟| 91色精品视频在线| 成人免费视频app| 成人不用播放器| 精品中文字幕乱| 欧美gayvideo| 欧美黄网在线观看| 色综合天天天天做夜夜夜夜做| 国产亚洲欧美日韩精品一区二区三区 | 欧美性猛交一区二区三区精品 | 一本一道久久久a久久久精品91| 国产精品污www在线观看| 九色网友自拍视频手机在线| 亚洲色无码播放| 国产精品99一区二区三| 日本道在线视频| 色婷婷精品久久二区二区蜜臀av | 国产一区二区在线网站 | 久久亚洲a v| 欧美亚洲国产怡红院影院| 播放一区二区| 国产私拍一区| 亚洲美女视频在线观看| 中文字幕乱码中文乱码51精品| 国产日韩欧美在线视频观看| 成人av网站在线| 尤物视频在线看| 亚洲综合成人婷婷小说| 国产精品久久久久久久久快鸭| av免费不卡国产观看| 亚洲一区二区三| 一区二区三区四区蜜桃| 国产一区二区三区视频在线| 亚洲ai欧洲av| 欧美日韩免费观看一区三区| 欧美调教在线| 国产成人无码一二三区视频| 日韩av最新在线观看| 免费在线黄色电影| 黄色一级影院| 亚洲欧美日韩精品| 久久午夜精品一区二区| 三上悠亚在线免费观看| 久久久久久久久久久免费 | 羞羞小视频视频| 中文字幕欧美日韩va免费视频| 老司机一区二区三区| 色播视频在线观看| 欧美中文字幕视频| 国产日韩欧美不卡在线| 四虎地址8848精品| 一级特黄妇女高潮| 日韩精品中文在线观看| 久久久久国内| 日本欧美电影在线观看| 欧美一区二区在线| 亚洲国产精品人人爽夜夜爽| 美女网站视频久久| 黑人精品一区| 成人在线国产视频| 欧美老肥婆性猛交视频| 国产亲近乱来精品视频| 国内精品麻豆美女在线播放视频| mm131亚洲精品| 国产精品视频网站| 欧美日韩亚洲国产综合| 视频一区二区三区中文字幕| 成人欧美大片| 超碰在线97免费| 国产剧情日韩欧美| 日韩一区二区在线看| 国产成人av一区二区三区在线| 精品中文字幕一区二区三区四区| 成年人视频在线网站| 国产精品国产精品国产专区蜜臀ah| 91精品麻豆日日躁夜夜躁| 国产丶欧美丶日本不卡视频| 一区二区在线免费播放| 男人天堂午夜在线| 天堂一区二区三区| 欧美激情第6页| 色综合久久久久综合| 久久激情五月婷婷| www.成人网| 超碰在线国产| 黄网站欧美内射| 国产精品亚洲精品| 精品少妇一区二区三区视频免付费| 成人av在线观| 93在线视频精品免费观看| 国产色婷婷在线| 波多结衣在线观看| 精品国产一区二区三区麻豆免费观看完整版 | 亚洲精品网址在线观看| 国产精品福利一区| 国产精品日韩欧美一区| 日韩亚洲国产免费| 无人视频在线观看免费| 欧美日韩一区二区三区电影| 9.1国产丝袜在线观看 | 91在线免费视频| 亚洲精品国产免费| 亚洲精品国产a| 麻豆视频观看网址久久| av日韩精品| 日皮视频在线观看| 国外亚洲成av人片在线观看| 日韩精品一区二区三区色偷偷 | 欧美人动与zoxxxx乱| 91小视频免费观看| 激情成人综合| 人人爱人人干婷婷丁香亚洲| 国产精品久久一区二区三区不卡| 人妻av中文系列| 久久99久久99精品蜜柚传媒| 久久成人国产精品| 欧美一区二区性放荡片| 18成人在线视频| 成人一区二区三区在线观看| 精品二区久久| 秋霞影院一区二区三区| 欧美一级大片|