編譯順序
㈠ 請問一下當編譯軟體編譯代碼的時候是按照怎麼的順序執行的呀
編譯代碼首先是進行預處理,然後編譯,再鏈接,生成可執行程序
程序執行從main函數開始,程序順序執行。如有以下代碼:
#include <stdio.h>
#include <stdlib.h>
int add(int a, int b)
{
return a + b;
}
int sum(int a, int b)
{
return add(a, b);
}
int main(void)
{
int a = 1, b = 2, c = 3, d = 4;
int vaule1, vaule2;
vaule1 = sum(a, b);
vaule2 = add(c, d);
system("pause");
return 0;
}
則執行過程為
1、首先進入main函數
2、遇到第一個調用函數sum,則進入sum函數
3、在進入sum函數後,sum又調用了add函數,則進入add函數
4、add函數將 a+ b的值返回至sum函數;
5、sum函數返回至主函數,至此sum函數調用結束
6、在main函數中接下來開始進入調用函數add
7、add函數返回a+b的值至主函數,
8、程序執行結束
㈡ 對於一個比較大的工程,keil在編譯那些文件的順序是怎麼樣的怎麼看出文件編譯的先後順呢
編譯順序就是左邊項目的樹型目錄中的C文件排列順序,這個順序沒什麼關系的。
你要看的話,在編譯的時候,提示信息會依次告訴你「compling xxxx.c...」
㈢ 關於java中一次編譯多個源文件時的編譯順序的問題
在java編譯過程中,確實是會自動尋找的.當它先編譯Test的時候,發現需要先編譯TestPackage類,才能完成編譯Test的工作,然後編譯器開始編譯TestPackage.
如果,你的這兩個java文件都沒有打包,並且在同一個目錄下的話,你可以通過直接輸入javac Test.java看到,盡管你沒有發出命令要求編譯TestPackage類,但是由於編譯器檢測到需要有TestPackage類的支持,才能編譯Test,所以這時TestPackage也被編譯了.
現在程序打包了,你先編譯Test的這種情況下,編譯器先找的是包,而你的包org.it315.example是不存在的,所以會出錯
㈣ android怎麼樣編譯framework
在開發過程中,尤其是Framework相關開發時,有時候需要重新編譯資源文件.編譯順序和注意事項如下:
1,資源文件位置:frameworks/base/core/res
2,編譯後生成的文件:framework-res.apk 另外com.android.internal.R會更新這個R.java所在目錄為/out/target/common/R/com/android/internal.
3,編譯資源後,必須重新編譯framework.jar.
4,如果在frameworks/base/core/res執行mm是並不重新編譯,請使用toutch ### 命令
###代表目錄下的一個文件.
5,資源文件要小寫.
6,如果沒有必要,不要編譯資源文件,可以用其他方式使用資源,比如將資源使用adb push 傳到某個目
錄,程序中直接指定具體目錄.我在編譯資源過程中遇到一些奇怪的問題,比如有時候許多圖標會顯
示錯誤,原因猜測跟重新編譯資源有關,可以試著重新編譯services.jar並替換看看.
舉一個例子:假如我想在WindowManagerService.java中使用一個圖片資源pic.png.順序如下.
1,將文件pic.png拷貝到位置:frameworks/base/core/res/res/drawable下.
2,在frameworks/base/core/res/res/drawable目錄下執行touch pic.png.
3,進入目錄frameworks/base/core/res/ 執行mm命令, 編譯 framework-res.apk
4,執行完後com.android.internal.R 會新生成一個R.drawable.pic的引用.在程序中使用即可.
5,在目錄frameworks/base/ 下執行mm 編譯 framework.jar.
6,在WindowManagerService.java中使用com.android.internal.R.drawable.pic,使用完後保存文件.
7,進入目錄frameworks/base/services/java/ 執行mm 編譯 services.jar
8,替換機器上(虛擬機或者真機)的jar apk文件.
adb push framework-res.apk /system/framework/
adb push services.jar /system/framework/
adb push framework.jar /system/framework/
執行命令時注意framework-res.apk 的真實路徑.
9,reboot 機器,查看修改結果.大功告成!
㈤ maven並發編譯可不可以指定順序
在多模塊的工程中,如果模塊之間存在依賴關系,那模塊的編譯必須要有順序的要求。例如:P(parent)中包含A模塊和B模塊,且A模塊依賴於B模塊,那麼在P中的pom,xml中需申明為:
<moles>
<mole>B</mole>
<mole>A</mole>
</moles>
B需要聲明在A的前面,這樣先編譯後的內容才能被A依賴。
同時,什麼version的時候,只需要在P中申明即可,如${p.version}其他的採用繼承的方式,即在A和B模塊中不申明自己的版本, A中依賴的B同樣使用${P.version}完成。