在使用make編譯時,修改原始檔的註釋內容,是否會重新編譯?
問題:
在使用make編譯C程式碼時,如果修改了註釋的內容,是否會重新編譯呢?
分析:
這個問題其實是分析make時編譯時,判斷是否編譯的條件,是判斷檔案的時間還是內容呢?
如果是時間,那麼在修改註釋後,儲存檔案,在執行預處理時,其生成的預處理檔案的時間是更新的,因此後續依賴該預處理的所有檔案都將重新編譯連結;
如果是判斷的內容呢?則在修改註釋前後,生成的預編譯的檔案的內容是一樣的,因此依賴他的檔案將不會重新編譯連結;
測試:
編寫點c檔案如下:
extern int add(int a, int b);
int main(void)
{
printf("Day Hello World.\n"); // 列印一句話
printf("a + b=%d\n", add(1, 2));
return 0;
}
編譯:
-rw-r--r-- 1 zhong zhong 65 Dec 8 08:06 add.c
-rwxrwxr-x 1 zhong zhong 8628 Dec 8 08:25 day1
-rw-r--r-- 1 zhong zhong 213 Dec 8 08:10 day1.c
-rw-r--r-- 1 zhong zhong 83 Dec 8 08:15 makefile
此時修改註釋:
extern int add(int a, int b);
int main(void)
{
printf("Day Hello World.\n"); // 列印一句話 僅僅修改註釋
printf("a + b=%d\n", add(1, 2));
return 0;
}
再次編譯檢視,檔案時間:
-rw-r--r-- 1 zhong zhong 65 Dec 8 08:06 add.c
-rwxrwxr-x 1 zhong zhong 8628 Dec 8 08:26 day1
-rw-r--r-- 1 zhong zhong 227 Dec 8 08:26 day1.c
-rw-r--r-- 1 zhong zhong 83 Dec 8 08:15 makefile
發現day1這個檔案的時間更新了,說明其被重新編譯了;
結論:
修改原始檔的註釋,會被重新變數連結,原因是修改原始檔的註釋後,生成的預處理的檔案的時間發生變化,因此會重新編譯連結其他依賴這個預處理檔案的檔案。
相關文章
- Linux下使用make命令編譯c原始檔Linux編譯
- caffe make 編譯編譯
- Make編譯之編譯32bit ffmpeg編譯
- 編譯時註解(轉)編譯
- MySQL5.5原始碼編譯新增編譯備註資訊~MySql原始碼編譯
- 使用ilasm 和 ildasm編譯和反編譯工具對DLL檔案修改ASMLDA編譯
- nvme driver 原始碼修改、編譯原始碼編譯
- 如何在Windows下使用make編譯MakefileWindows編譯
- 編譯時註解之APT編譯APT
- Android編譯時註解框架系列1-什麼是編譯時註解Android編譯框架
- 編譯核心make dep 的意思(轉)編譯
- ildasm、ilasm修改、反編譯 已經編譯的 dll檔案(c#)LDAASM編譯C#
- gcc 編譯多個原始檔GC編譯
- [譯][草案] HTTP “帶外”內容編碼HTTP
- PHP編譯,執行make報錯PHP編譯
- Hadoop SRC重新編譯Hadoop編譯
- ffmpeg iOS平臺編譯 指令碼註釋iOS編譯指令碼
- 反編譯APK資原始檔與原始碼編譯APK原始碼
- gcc編譯階段列印巨集定義的內容GC編譯
- Android 如何編寫基於編譯時註解的專案Android編譯
- Android 編譯時註解-初認識Android編譯
- linux核心修改編譯Linux編譯
- 【翻譯】編寫程式碼註釋的最佳實踐
- 用Gulp編譯Sass並實時重新整理編譯
- pdf檔案內容怎麼修改 pdf怎麼免費編輯修改內容
- 儲存過程編譯時會卡死儲存過程編譯
- benq,我下了signup,編譯的時候明明編譯了Mysql.java,但在編譯別的檔案時老提示如下錯誤:ENQ編譯MySqlJava
- [譯] 優化 Swift 的編譯時間優化Swift編譯
- MAC使用APKTool反編譯apk修改版本號後重新打包MacAPK編譯
- 使用ant編譯Java檔案(一)編譯Java
- 使用ant編譯Java檔案(二)編譯Java
- 輕鬆學會原始碼編譯Vim 8.0原始碼編譯
- 使用makefile編譯編譯
- Vue3原始碼分析——編譯模組和編譯器Vue原始碼編譯
- [轉]andriod的apk檔案相關的編譯反編譯工具APK編譯
- 交叉編譯-Mac環境使用NDK編譯FFmpeg編譯Mac
- 從原始檔到可執行檔案:原始檔的預處理、編譯、彙編、連結編譯
- clang在編譯時指定目標檔案所需的最低macOS版本編譯Mac