當前位置:首頁 » 編程軟體 » 源碼編譯過程包括哪些

源碼編譯過程包括哪些

發布時間: 2023-06-08 11:38:51

⑴ 自己可以編譯安卓源碼

用最新的Ubuntu 16.04,請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:

sudo apt-get install git git config –global user.email 「[email protected]」 git config –global user.name 「test」

其中[email protected]為你自己的郵箱.

簡要說明

android源碼編譯的四個流程:1.源碼下載;2.構建編譯環境;3.編譯源碼;4運行.下文也將按照該流程講述.

源碼下載

由於某牆的原因,這里我們採用國內的鏡像源進行下載.
目前,可用的鏡像源一般是科大和清華的,具體使用差不多,這里我選擇清華大學鏡像進行說明.(參考:科大源,清華源)

repo工具下載及安裝

通過執行以下命令實現repo工具的下載和安裝

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

補充說明
這里,我來簡單的介紹下repo工具,我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google採用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:

我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:


這里寫圖片描述

執行完該命令後,再使用make命令繼續編譯.某些情況下,當你執行jack-admin kill-server時可能提示你命令不存在,此時去你去out/host/linux-x86/bin/目錄下會發現不存在jack-admin文件.如果我是你,我就會重新repo sync下,然後從頭來過.

錯誤三:使用emulator時,虛擬機停在黑屏界面,點擊無任何響應.此時,可能是kerner內核問題,解決方法如下:
執行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通過使用kernel-qemu-armv7內核 解決模擬器等待黑屏問題.而-partition-size 1024 則是解決警告: system partion siez adjusted to match image file (163 MB >66 MB)

    如果你一開始編譯的版本是aosp_arm-eng,使用上述命令仍然不能解決等待黑屏問題時,不妨編譯aosp_arm64-eng試試.

    結束吧

    到現在為止,你已經了解了整個android編譯的流程.除此之外,我也簡單的說明android源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.

    ⑵ 編譯程序的各階段都涉及到什麼

    預處理,詞法分析,文法分析,生成中間代碼,生成目標代碼。

    1、預處理:導入源程序並保存(C文件)。

    2、編譯:將源程序轉換為目標文件(Obj文件)。

    3、鏈接:將目標文件生成為可執行文件(EXE文件)。



    (2)源碼編譯過程包括哪些擴展閱讀:

    c語言代碼分為程序的幾個階段:

    首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。

    編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分。

    ⑶ 開發一個c語言程序要經過哪四個步驟

    開發一個C語言程序需要經過的四個步驟:編輯、編譯、連接、運行。

    C語言程序可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的C語言編譯器和庫,然後將C源代碼編譯、連接成目標二進制文件之後即可運行。

    1、預處理:輸入源程序並保存(.C文件)。

    2、編譯:將源程序翻譯為目標文件(.OBJ文件)。

    3、鏈接:將目標文件生成可執行文件( .EXE文件)。

    4、運行:執行.EXE文件,得到運行結果。

    (3)源碼編譯過程包括哪些擴展閱讀:

    C語言代碼變為程序的幾個階段:

    1、首先是源代碼文件test.c和相關的頭文件,如stdio.h等被預處理器cpp預處理成一個.i文件。經過預編譯後的.i文件不包含任何宏定義,因為所有的宏已經被展開,並且包含的文件也已經被插入到.i文件中。

    2、編譯過程就是把預處理完的文件進行一系列的詞法分析、語法分析、語義分析以及優化後產生相應的匯編代碼文件,這個過程往往是我們所說的整個程序的構建的核心部分,也是最復雜的部分之一。

    3、匯編器不直接輸出可執行文件而是輸出一個目標文件,匯編器可以調用ld產生一個能夠運行的可執行程序。即需要將一大堆文件鏈接起來才可以得到「a.out」,即最終的可執行文件。

    4、在鏈接過程中,對其他定義在目標文件中的函數調用的指令需要被重新調整,對實用其他定義在其他目標文件的變數來說,也存在同樣問題。

    參考資料來源:網路-c語言

    java語言的編譯過程與一般編程語言的編譯過程有何不同

    1. Java代碼編譯和執行的整個過程包含了以下三個重要的機制:

    Java源碼編譯機制

    類載入機制

    類執行機制

    • Java源碼編譯機制

    Java源碼編譯由以下三個過程組成:

    分析和輸入到符號表

    註解處理

    語義分析和生成class文件


    • JVM的類載入是通過ClassLoader及其子類來完成的

    • JVM是基於棧的體系結構來執行class位元組碼的。線程創建後,都會產生程序計數器(PC)和棧(Stack),程序計數器存放下一條要執行的指令在方
      法內的偏移量,棧中存放一個個棧幀,每個棧幀對應著每個方法的每次調用,而棧幀又是有局部變數區和操作數棧兩部分組成,局部變數區用於存放方法中的局部變
      量和參數,操作數棧中用於存放方法執行過程中產生的中間結果

    ⑸ 簡述將源程序編譯成可執行程序的過程

    一個源程序到一個可執行程序的過程:預編譯、編譯、匯編、鏈接。其中,編譯是主要部分,其中又分為六個部分:詞法分析、語法分析、語義分析、中間代碼生成、目標代碼生成和優化。

    預編譯:主要處理源代碼文件中的以「#」開頭的預編譯指令。處理規則如下:

    1、刪除所有的#define,展開所有的宏定義。

    2、處理所有的條件預編譯指令,如「#if」、「#endif」、「#ifdef」、「#elif」和「#else」。

    3、處理「#include」預編譯指令,將文件內容替換到它的位置,這個過程是遞歸進行的,文件中包含其他文件。

    4、刪除所有的注釋,「//」和「/**/」。

    5、保留所有的#pragma 編譯器指令,編譯器需要用到他們,如:#pragma once 是為了防止有文件被重復引用。

    6、添加行號和文件標識,便於編譯時編譯器產生調試用的行號信息,和編譯時產生編譯錯誤或警告是能夠顯示行號。

    (5)源碼編譯過程包括哪些擴展閱讀:

    編譯過程中語法分析器只是完成了對表達式語法層面的分析,語義分析器則對表達式是否有意義進行判斷,其分析的語義是靜態語義——在編譯期能分期的語義,相對應的動態語義是在運行期才能確定的語義。

    其中,靜態語義通常包括:聲明和類型的匹配,類型的轉換,那麼語義分析就會對這些方面進行檢查,例如將一個int型賦值給int*型時,語義分析程序會發現這個類型不匹配,編譯器就會報錯。

    ⑹ C語言源程序到運行程序經過哪幾個步驟

    1、預處理

    在這一階段,源碼中的所有預處理語句得到處理,例如:#include語句所包含的文件內容替換掉語句本身,所有已定義的宏被展開。

    根據#ifdef,#if等語句的條件是否成立取捨相應的部分,預處理之後源碼中不再包含任何預處理語句。

    GCC預處理階段可以生成.i的文件,通過選項-E可以使編譯器在預處理結束時就停止編譯。例如:gcc -E -o hello.i hello.c

    2、編譯

    這一階段,編譯器對源碼進行詞法分析、語法分析、優化等操作,最後生成匯編代碼。這是整個過程中最重要的一步,因此也常把整個過程稱為編譯。

    可以通過選項-S使GCC在進行完編譯後停止,生成.s的匯編程序。例如:gcc -S -o hello.s hello.c

    3、匯編

    這一階段使用匯編器對匯編代碼進行處理,生成機器語言代碼,保存在後綴為.o的目標文件中。

    當程序由多個代碼文件構成時,每個文件都要先完成匯編工作,生成.o目標文件後,才能進入下一步的鏈接工作。

    目標文件已經是最終程序的某一部分了,只是在鏈接之前還不能執行。可以通過-c選項生成目標文件:gcc -c -o hello.o hello.c

    4、鏈接

    經過匯編以後的機器代碼還不能直接運行。為了使操作系統能夠正確載入可執行文件,文件中必須包含固定格式的信息頭,還必須與系統提供的啟動代碼鏈接起來才能正常運行,這些工作都是由鏈接器來完成的。gcc -o hello hello.c

    5、運行:執行.EXE文件,得到運行結果。

    ⑺ 源碼怎麼編譯

    使用編譯器如VC++6.0,VC++2008

    ⑻ 如何編譯C語言源代碼

    下載一個VC2005軟體,把代碼復制到裡面,設置好C運行環境,點擊編譯,OK,然後點擊那個感嘆號,直接鏈接運行,就OK了。

    ⑼ c語言程序編譯過程包括哪四個

    C語言編譯過程分成四個步驟: 
    1,由.c文件到.i文件,這個過程叫預處理 
    2,由.i文件到.s文件,這個過程叫編譯 
    3,由.s文件到.o文件,這個過程叫匯編 
    4,由.o文件到可執行文件,這個過程叫鏈接
    用gcc查看預處理過程(假設源文件叫hello.c) 
    gcc -o hello.i hello.c -E 
    然後用 vi hello.i 即可查看生成的預處理文件
    按ESC 輸入:$ 跳到預處理文件 可看到hello.c源碼
    宏的本質:預處理階段的單純的字元串替換
    預處理階段,不考慮C語法

    ⑽ Linux中源碼編譯安裝程序包括哪些基本步驟

    第一步:創建編譯腳本
    進入到源碼目錄 執行 ./configure --prefix=/.../.....(--prefix=後面是想要安裝到的目錄)
    第二部:編譯
    執行 make
    第三部:安裝
    執行 make install
    當然上面這幾部都是最基本的步驟,如果想優化編譯,要在./configure 後面加參數,或者configure之後手動修改Makefile文件 如O2(優化等級) FLAGS 等編譯參數的修改。
    --------------------------------------------------------------------------------------------------------------
    以上都是源碼包的編譯
    如果是自己寫的C代碼 直接 用gcc編譯即可。
    例如 編譯test.c
    執行 gcc -o test test.c即可將test.c編譯為可執行的文件 test

    自己打出來的 要採納啊!

    熱點內容
    phpmulticurl 發布:2025-02-12 01:41:58 瀏覽:70
    資料庫的集群 發布:2025-02-12 01:36:55 瀏覽:633
    c語言實驗買糖果 發布:2025-02-12 01:36:54 瀏覽:263
    安卓怎麼轉微信到iphone 發布:2025-02-12 01:36:22 瀏覽:385
    大眾朗逸哪個配置好點 發布:2025-02-12 01:25:41 瀏覽:68
    引用jar怎麼發布到伺服器 發布:2025-02-12 01:07:44 瀏覽:334
    舊電腦開伺服器 發布:2025-02-12 01:02:50 瀏覽:278
    電腦伺服器兩個電源什麼意思 發布:2025-02-12 00:55:15 瀏覽:221
    linux外網不能訪問埠 發布:2025-02-12 00:55:13 瀏覽:439
    安卓系統哪裡可以看充電次數 發布:2025-02-12 00:53:53 瀏覽:724