在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在windows上安裝或執行程序遇到的runtime是什么?

Q4MP_gh_c472c21 ? 來源:寫個解 ? 作者:吳夢龍 ? 2021-03-17 09:51 ? 次閱讀

??什么是runtime

在windows上安裝或執行程序,都有機會遇到詞匯——runtime。

CRT(C runtime library)

Microsoft Access 2016 Runtime

microsoft visual c++ runtime library

C Runtime

Visual C++ 2008 Runtime

.NET Common Language Runtime

runtime究竟是什么,首先runtime在英文里是合成單詞,無論是英文還是中文都容易在文字層面被誤解,中文直譯“運行時”,中文的斷句容易引起歧義,究竟是“運行、時”還是“運行時”傻傻分不清。

為了準確描述runtime的實際意思,我認為runtime換成execution environment理解起來更容易:即位應用程序的執行準備運行環境。

運行時庫是在編譯時使用的特殊庫,用于在計算機程序的執行中實現內置于編程語言中的功能,包括:輸入、輸出、內存管理。

crt0

比如C語言需要的最小runtime叫做crt0(C runtime)。“crt”代表 “c runtime”,“0”代表“最基本、最開始”。crt0應該包含如下7個步驟。異常向量配置

_start函數和stack初始化

cache 初始化

清除BSS

構造函數和析構函數處理

C初始化功能

調用main入口這個crt0的結構看起來是不是很熟悉?沒錯,在u-boot源碼啟動代碼看到類似結構。

.text.globl _start_start: # _start is the entry point known to the linker xor %ebp, %ebp # effectively RBP := 0, mark the end of stack frames mov (%rsp), %edi # get argc from the stack (implicitly zero-extended to 64-bit) lea 8(%rsp), %rsi # take the address of argv from the stack lea 16(%rsp,%rdi,8), %rdx # take the address of envp from the stack xor %eax, %eax # per ABI and compatibility with icc call main # %edi, %rsi, %rdx are the three args (of which first two are C standard) to main mov %eax, %edi # transfer the return of main to the first argument of _exit xor %eax, %eax # per ABI and compatibility with icc call _exit # terminate the program

crt0.S編譯生成crt0.o,今后gcc編譯的所有應用程序前都加上這段內容,既然有crt0,那么再發揮想象力,是不是還會有crt1什么的呢,全盤搜索看到若干crt前綴的*.o文件,這些crt*.o文件合并起來被稱做 “runtime library”

運行時庫和標準庫區別

運行時庫(runtime library)與標準庫(standard library)不是一個東西。

標準庫和運行庫之間有一個非常重要的區別。盡管標準庫定義了程序員可以使用的功能,但不是編程語言的規范的一部分,至少在C語言中不是,運行時庫卻時程序運行所必需的部分。

舉個例子,printf()是C標準庫的一部分,程序的啟動是在運行時庫實現的,啟動過程對程序員不可見,因此,你編寫的程序可以不使用標準庫,但始終需要運行時庫,否則無法運行。老實說,在操作系統上編寫不使用標準庫的應用程序幾乎無實際意義,那樣的程序沒有訪問外設的方法、屏幕上不會輸出令人印象深刻的結果。在裸機上情況就不一樣了,訪問外設不需要系統調用,沒有系統的權限隔離,外設的寄存器也有讀寫權限。

簡單編寫一個只有main

int main(int argc, char **argv){ return 0;}

編譯后看看符號表:gcc a.c

readelf -s a.out很多不知那來的函數符號都來源與crt*.o,如register_tm_clones源于crtbegin.o;__data_start、__libc_start_main源于crt1.o

31: 0 FILE LOCAL DEFAULT ABS crtstuff.c32: 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones33: 0 FUNC

LOCAL DEFAULT 13 register_tm_clones34: 0 FUNC

LOCAL DEFAULT 13 __do_global_dtors_aux35: 1 OBJECT LOCAL DEFAULT 24 completed.732536: 0 OBJECT

LOCAL DEFAULT 19 __do_global_dtors_aux_fin37: 0 FUNC LOCAL DEFAULT 13 frame_dummy38: 0 OBJECT

LOCAL DEFAULT 18 __frame_dummy_init_array_39: 0 FILE LOCAL DEFAULT ABS a.c40: 0 FILE

LOCAL DEFAULT ABS crtstuff.c41: 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__42: 0 FILE

LOCAL DEFAULT ABS 43: 0 NOTYPE LOCAL DEFAULT 18 __init_array_end44: 0 OBJECT

LOCAL DEFAULT 20 _DYNAMIC45: 0 NOTYPE LOCAL DEFAULT 18 __init_array_start46: 0 NOTYPE

LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR47: 0 OBJECT LOCAL DEFAULT 22 _GLOBAL_OFFSET_TABLE_48: 0 FUNC

LOCALDEFAULT 10 _init49: 1 FUNC GLOBAL DEFAULT 13 __libc_csu_fini50: 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab51: 0 NOTYPE WEAK DEFAULT 23 data_start52: 0 NOTYPE GLOBAL DEFAULT 23 _edata53: 0 FUNC GLOBAL HIDDEN 14 _fini54: 0 FUNC GLOBAL DEFAULT UND

__libc_start_main@@GLIBC_55: 0 NOTYPE GLOBAL DEFAULT 23 __data_start56: 0 NOTYPE WEAK DEFAULT UND

__gmon_start__57: 0 OBJECT GLOBAL HIDDEN 23 __dso_handle58: 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used59: 93 FUNC GLOBAL DEFAULT 13 __libc_csu_init60: 0 NOTYPE GLOBAL DEFAULT 24 _end61: 43 FUNC GLOBAL DEFAULT 13 _start62: 0 NOTYPE GLOBAL DEFAULT 24 __bss_start63: 18 FUNC GLOBAL DEFAULT 13 main64: 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__65: 0 NOTYPE WEAK DEFAULT UND

_ITM_registerTMCloneTable66: 0 FUNC WEAK DEFAULT UND __cxa_finalize@@GLIBC_2.2

原文標題:runtime是什么

文章出處:【微信公眾號:嵌入式ARM】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • WINDOWS
    +關注

    關注

    4

    文章

    3556

    瀏覽量

    89081
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137378

原文標題:runtime是什么

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何實現Windows應用在Linux系統的無縫運行

    統信 Windows 應用兼容引擎 V3.0 的推出,讓用戶可以 deepin 系統直接雙擊.exe文件運行 Windows 應用程序
    的頭像 發表于 12-30 09:51 ?329次閱讀
    如何實現<b class='flag-5'>Windows</b>應用在Linux系統<b class='flag-5'>上</b>的無縫運行

    如何在Windows安裝Ubuntu系統

    Windows安裝Ubuntu系統通常有兩種方法:使用虛擬機軟件安裝Ubuntu作為虛擬機,或者使用雙啟動安裝Ubuntu與
    的頭像 發表于 12-12 14:29 ?768次閱讀

    將AFE5818與TSW1400連接好,按照說明運行程序后出現了error 1003的問題,怎么解決?

    我將AFE5818與TSW1400連接好后,按照說明運行程序后,出現了以下問題 我換了一臺pc后又出現了error 1003的問題,我使用的是windows11,安裝了.Net
    發表于 11-19 07:52

    Ubuntu 24.04 LTS安裝飛槳PaddleX

    前面我們介紹了《Windows用遠程桌面訪問Ubuntu 24.04.1 LTS》本文接著介紹安裝飛槳PaddleX。 PaddleX 3.0? 是基于飛槳框架構建的一站式全流程開發工具,它集成
    的頭像 發表于 11-11 17:45 ?313次閱讀
    <b class='flag-5'>在</b>Ubuntu 24.04 LTS<b class='flag-5'>上</b><b class='flag-5'>安裝</b>飛槳PaddleX

    WINDOWS XP安裝工具TLV320AIC310xEVM_v1.0.1出現錯誤\"Fatal Error怎么解決?

    WINDOWS XP安裝工具TLV320AIC310xEVM_v1.0.1出現錯誤\"Fatal Error!! Required NIPathDir property NIS
    發表于 10-24 08:13

    TLV320AIC3204IRHBR能否用于HD Audio的?WindowsLinux是否有相應的驅動呢?

    TLV320AIC3204IRHBR能否用于HD Audio的,WindowsLinux是否有相應的驅動呢?
    發表于 10-14 06:49

    labview生成可執行程序后vi都在同一路徑下嗎

    LabVIEW中,當您生成可執行程序(exe文件)后,VI(虛擬儀器)并不直接以文件的形式存在于可執行文件的同一物理路徑下。實際,LabVIEW的可
    的頭像 發表于 09-04 17:06 ?697次閱讀

    gprsdemowindows server系統無法運行的解決辦法

    gprsdemowindows server系統無法運行,請按照如下步驟設置以解決該問題。1. 按下圖進入依次下面界面 2. 點擊“添加”后,會彈出文件瀏覽對話框,找到DTU配置工具的
    發表于 07-25 06:03

    Windows11安裝了EZ-USB Suite 1.3.5,但無法再閃存我的設備,為什么?

    你好,我最近在 Windows 11 安裝了 EZ-USB Suite 1.3.5,但無法再閃存我的設備。 我使用的是 CYUSB2024 設備。 我按照說明安裝
    發表于 07-05 06:55

    為什么無法電腦安裝\"ezusbfx3sdk_1.3.5_Windows_x32-x64.exe\"?

    我正在嘗試將 ezusbfx3sdk_1.3.5_Windows_x32-x64.exe 安裝到我的電腦。 但它出錯顯示 MICROSOFT.NET 版本應在 3.5 4 以上,
    發表于 05-28 06:52

    在運行Windows11的系統安裝KitProg編程器驅動程序遇到的疑問求解

    我在運行 Windows 11 的系統安裝 KitProg 編程器驅動程序遇到困難。 每次嘗試安裝
    發表于 05-21 06:35

    用Keil上下載按鈕下載執行程序和直接斷電執行程序,有什么不一樣?

    連接上J-Link或者ST-Link的時候,可以直接在Keil上點擊下面的按鈕下載程序執行程序(當然要勾選下載復位后自動執行) 想問的是,這樣下載
    發表于 05-06 06:43

    NUCLEO-32H745ZIQ板卡不執行程序,點燈程序燒錄進去也沒有反應怎么解決?

    NUCLEO-32H745ZIQ板卡不執行程序,點燈程序燒錄進去也沒有反應,應該怎么解決?
    發表于 03-28 08:02

    RK3568安裝RT-Thread,根據板級支持包操作時遇到的疑問求解

    我想在RK3568安裝RT-Thread,根據板級支持包操作時,遇到了一些疑問,大佬求教! 我已經完成了編譯部分,生成了rtthread.elf與rtthread.bin文件 請問燒錄進SD
    發表于 03-01 06:23

    CY8CKIT-059 KitProg驅動程序無法安裝Windows 11中怎么解決?

    嗨,你好, 我 Macbook M2 的虛擬機里安裝Windows 11,但是 KitProg 的驅動程序不起作用。 我可以從 \" C:Program Files (x86
    發表于 01-25 07:45
    主站蜘蛛池模板: 好爽毛片一区二区三区四| 久久99久久精品免费思思6| 久久久五月天| 最近2018年在线中文字幕高清| 久久草精品| 午夜国产在线| 天天干天天狠| www网站在线观看| 欧美爱爱网址| 四虎国产精品视频免费看| 特黄特色三级在线播放| 一级特黄aa大片| 婷婷丁香四月| 香蕉狠狠再啪线视频| 中文天堂最新版在线精品| 亚洲色图综合| 日韩有色| 国内精品久久久久影院薰衣草 | you ji z z日本人在线观看| 亚洲视频一二三| 亚洲大尺度视频| 综合色久| 三级在线免费观看| 色综合久久五月| 四虎精品影院| 免费的国语一级淫片| 久久九九国产精品怡红院| 国产日韩一区二区三区| 午夜大片男女免费观看爽爽爽尤物| 尻逼久久| 日韩高清成人毛片不卡| 香蕉视频啪啪| 久青草国产高清在线视频| 亚洲日本中文字幕天天更新| 亚洲午夜久久久久影院| 91日韩精品天海翼在线观看| 奇米影视99| 亚洲欧洲一区二区三区在线观看| 性欧美videofree另类超大| 免费四虎永久在线精品| 午夜在线影院|