Libra幣核心代碼研讀1---找到程序入口點

在接下來的博文中,我們將一起來研究Libra Core的核心源碼,由於Libra Core是一門叫Rust的小衆語言編寫的,因此在閱讀源碼之前,可以粗略的看一下《The Rutst Programming Language》,在官網上就有HTML版本可以在線看,可惜是英文版的,不清楚是否有中文版本。這本書有600多頁,個人建議只需要花兩三天時間大概瀏覽一下,知道有如ownership、borrow、move等概念即可,在閱讀和修改代碼時,閱讀代碼和錯誤提示時知道怎麼去查資料就可以了。
在研讀任何代碼之前,我們第一步要做的肯定是找到程序的入口點。在上一篇博文中,我們介紹了可以用如下命令啓動本地測試網絡:

cargo run -p libra_swarm -- -s

我們知道cargo是Rust語言包管理和運行工具,cargo run就是來編譯和運行可執行程序的,所以我們知道要運行的程序爲libra_swarm。在libra目錄下查詢libra_swarm,發現其是一個目錄,內容如下所示:
在這裏插入圖片描述
在該目錄下有Cargo.toml文件,定義這個程序的版本號等元信息和依賴的第三方庫,還有src目錄,在src目錄下,我們看到了main.rs,我們基本可以確定,程序的入口文件爲這個文件,通過編輯器找開這個文件:

fn main() {
    println!("Startup in swarm mode ...");
    let args = Args::from_args();
    let num_nodes = args.num_nodes.unwrap_or(1);

    let (faucet_account_keypair, faucet_key_file_path, _temp_dir) =
        generate_keypair::load_faucet_key_or_create_default(args.faucet_key_file_path);

    println!("Faucet account created in file {:?}", faucet_key_file_path);

如上所示,我們在程序開頭處打印了一條信息,用來驗證我們的猜想是否正確。保存這個文件,然後運行如下命令啓動本地測試網絡:

cargo run -p libra_swarm -- -s

運行之後,大家可以看到,我們添加的打印內容,可以正常的打印出來。這就說明我們的猜想是正確的,這個文件中的main函數確實是程序的入口。找到程序的入口之後,我們就可以正式開始Libra Core的代碼研讀之旅了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章