導航:首頁 > 源碼編譯 > 源碼編譯場景

源碼編譯場景

發布時間:2022-07-09 20:54:34

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

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

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

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

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

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

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

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

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

(1)源碼編譯場景擴展閱讀:

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

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

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

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

自己打出來的 要採納啊!

⑶ 如何在android源碼下編譯自己的項目

在Android Studio代碼調試一文中,簡單的介紹了代碼調試的一些技巧.現在我們來談談Android源碼編譯的一些事.(俺認為,作為android developer人人都應該有一份自己Android源碼,這樣我們就可以隨時對自己有疑惑的地方通過親手調試來加強理解).
本文適用於Ubuntu 16.04上編譯Android 6.0.*,其他情況請酌情處理,自行參考官網吧.
請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:
sudo apt-get install git
git config –global user.email 「[email protected]
git config –global user.name 「test」

⑷ APP源碼要用什麼工具編譯

sourceinsight是個代碼瀏覽工具,它會自動對你的工程源碼進行語法分析,方便你迅速查找對某個特定符號的引用。它本身不帶編譯器調試器,但是你可以指定要用的編譯器,記得sourceinsight里有這個選項。1、->Removemissingfilefromproject選上可以避免因文件找不到而彈出錯誤對話框。把Misc->Usestricterconfirmationdialog選項去掉可以使確認時不輸入"yes"。2、TypingSourceEditing->Indentcommandsaffect#-preprocessorstatements。去掉後(默認值),進行多行縮進時不會影響預處理語句(如#if#endif)。AutoCompletion->Usedetailedcompletionwindow,選上後,聯想時可以出現該函數的詳細信息。見下圖:(簡單)(詳細)AutoCompletion->Insertparemetersforfunctions,去掉後,自動聯想不會把整個參數都輸出到當前行。BrowsinginLists->Matchsyllableswhiletyping(slower)。在symbollist框檢索符號時是否採用音節匹配方式,如對於函數FindNext,輸入find或者next都可以找到該函數。該功能可能導致反應緩慢(視工程和機器配置而定),建議關閉,因為即使在關閉狀態下也可以通過先輸入空格再輸入單詞來動態啟用該功能。注意BrowsinginLists里其實有兩個功能,但一般我們只能看到Matchsyllableswhiletyping這一條,應該是si的菜單設計沒有做好,導致在中文windows下不能顯示全,另一個功能是Matchmemberswhiletyping,用於打開/關閉按成員變數名來檢索類/結構體的功能。3、FilesOpeningFiles->Sharing:Letotherprogramsmodifyfiles,以共享方式打開文件,這個很重要,保證可以在其它編輯中同時編輯該文件。典型的場景就是用ide環境去動態編譯調試,而用si靜態閱讀。Customize'Open'Command,用於設置Ctrl+O打開的頁面,默認選項是,建議保持默認。SavingFiles->,如果發現保存後就不能undo了,請檢查該選項是否選中。。保存時自動去除每行尾部的空格和tab。建議選中。4、Languages自定義其它編程語言的語法解析,這個還是另寫一篇來講吧。ConditionalParsing不要錯過了,這里的Conditions功能實在讓人喜歡。Conditions是什麼意思呢?我們的代碼中一般都會有一些開關宏,通過在Conditions中配置這些宏的默認值,可以讓si把配置為不開啟的宏視為無效代碼,從而不進行符號檢索。如果源代碼中的開關宏太多,還可以使用ConditionParsing中的ScanFiles來自動找出所有開關宏。5、SymbolLookups沒太多特別的。6、Display顯示配置和個人喜好和顯示器的狀態有關,偶用的x60小本,屏幕資源有限,所以在DisplayElements里把ProjectWindow,StatusBar,ToolBar,ClipWindow都關了,基本用快捷鍵可以代替它們。Options->。很多大師都教導我們說一行不要寫太多代碼。在這個指導思想下,我們不需要這個東東。Showexactcaseoffilenames。如果看不慣si把所有的文件名首字母都大寫就勾上這個選項吧。。SourceLink很多時候用於外部命令輸出結果的解析(如Make,lint),這個功能會把解析結果與目標窗口自動tile,很實用。Trimlongpathnameswithellipses。這個建議不要選中。事實上這個主要影響標題欄,但一般來說標題欄上的空間是充裕的,選上之後往往會令我們不知道所編輯文件的具體位置。

⑸ 源碼怎麼編譯

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

⑹ .net源碼如何編譯

你這個應該是CS程序,下載一個Visual Studio 2010 然後在項目里新建一個項目--windows窗體程序。 把你現在這個項目導入進去就可以了。 很簡單。 最後按下F5就可以編譯了

⑺ C#源代碼編譯成為本地代碼的編譯過程

很有興趣的話,可以去閱讀下JeffreyRitchie的《ClrviaC#》,目前出到第三版,英文好的話強烈推薦看英文版的,而且我有該電子書和實體書。

下面講下我的理解:大致上不會出什麼差錯的,細節部分你可以參照上面的書籍!

1.首先,c#源碼經過c#編譯器被編譯成託管模塊(IL中間代碼、元數據(Metadata))

2.然後,使用C#編譯器以及程序集鏈接器(AssemblyLinker----AL.exe)將上述託管模塊以及項目的資源文件Combine(整合)成一個程序集(Assembly)

上述程序集就是你所看到的exe文件或者dll文件等等,程序集中包含了manifest描述文件,是該程序集內容以及關系的一個清單,具體的內容你可以參見JR的書跟Java中的類似!

雙擊該exe運行的時候:

3.最後,運行時,CLR裝載對應的程序集,使用內部的三個即時編譯器(常用的為JIT),再去根據本機的環境去進行相應的優化(針對CPU優化等等),即時的翻譯成本地機器指令去執行。

還有一個本地化代碼生成工具,NGen.exe~~

這個最好能去看看那本JR的神作!細節不是我三言兩語能講清的~~

⑻ 怎麼動態編譯Java源文件

(Write once, run anywhere)」 的目標。Java類文件中包含的位元組代碼可以被不同平台上的JVM所使用。Java位元組代碼不僅可以以文件形式存在於磁碟上,也可以通過網路方式來下載,還可以只存在於內存中。JVM中的類載入器會負責從包含位元組代碼的位元組數組(byte[])中定義出Java類。在某些情況下,可能會需要動態的生成 Java位元組代碼,或是對已有的Java位元組代碼進行修改。這個時候就需要用到本文中將要介紹的相關技術。首先介紹一下如何動態編譯Java源文件。
動態編譯Java源文件
在一般情況下,開發人員都是在程序運行之前就編寫完成了全部的Java源代碼並且成功編譯。對有些應用來說,Java源代碼的內容在運行時刻才能確定。這個時候就需要動態編譯源代碼來生成Java位元組代碼,再由JVM來載入執行。典型的場景是很多演算法競賽的在線評測系統(如PKU JudgeOnline),允許用戶上傳Java代碼,由系統在後台編譯、運行並進行判定。在動態編譯Java源文件時,使用的做法是直接在程序中調用Java編譯器。
JSR 199引入了Java編譯器API。如果使用JDK 6的話,可以通過此API來動態編譯Java代碼。比如下面的代碼用來動態編譯最簡單的Hello World類。該Java類的代碼是保存在一個字元串中的。
publicclassCompilerTest{
publicstaticvoidmain(String[]args)throwsException{
Stringsource="publicclassMain{publicstaticvoidmain(String[]args){System.out.println(\"HelloWorld!\");}}";
JavaCompilercompiler=ToolProvider.getSystemJavaCompiler();
=compiler.getStandardFileManager(null,null,null);
=newCompilerTest.StringSourceJavaObject("Main",source);
Iterable<extendsJavaFileObject>fileObjects=Arrays.asList(sourceObject);
CompilationTasktask=compiler.getTask(null,fileManager,null,null,null,fileObjects);
booleanresult=task.call();
if(result){

閱讀全文

與源碼編譯場景相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:579
python員工信息登記表 瀏覽:377
高中美術pdf 瀏覽:161
java實現排列 瀏覽:513
javavector的用法 瀏覽:982
osi實現加密的三層 瀏覽:233
大眾寶來原廠中控如何安裝app 瀏覽:916
linux內核根文件系統 瀏覽:243
3d的命令面板不見了 瀏覽:526
武漢理工大學伺服器ip地址 瀏覽:149
亞馬遜雲伺服器登錄 瀏覽:525
安卓手機如何進行文件處理 瀏覽:71
mysql執行系統命令 瀏覽:930
php支持curlhttps 瀏覽:143
新預演算法責任 瀏覽:444
伺服器如何處理5萬人同時在線 瀏覽:251
哈夫曼編碼數據壓縮 瀏覽:426
鎖定伺服器是什麼意思 瀏覽:385
場景檢測演算法 瀏覽:617
解壓手機軟體觸屏 瀏覽:350