在使用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編譯
- 使用ilasm 和 ildasm編譯和反編譯工具對DLL檔案修改ASMLDA編譯
- nvme driver 原始碼修改、編譯原始碼編譯
- 如何在Windows下使用make編譯MakefileWindows編譯
- Android編譯時註解框架系列1-什麼是編譯時註解Android編譯框架
- [譯][草案] HTTP “帶外”內容編碼HTTP
- linux核心修改編譯Linux編譯
- MAC使用APKTool反編譯apk修改版本號後重新打包MacAPK編譯
- ffmpeg iOS平臺編譯 指令碼註釋iOS編譯指令碼
- gcc編譯階段列印巨集定義的內容GC編譯
- 【翻譯】編寫程式碼註釋的最佳實踐
- 重新編譯python(親證有效)編譯Python
- pdf檔案內容怎麼修改 pdf怎麼免費編輯修改內容
- 用Gulp編譯Sass並實時重新整理編譯
- [譯] 優化 Swift 的編譯時間優化Swift編譯
- Spring原始碼編譯Spring原始碼編譯
- Kubernetes原始碼編譯原始碼編譯
- 使用makefile編譯編譯
- 從原始檔到可執行檔案:原始檔的預處理、編譯、彙編、連結編譯
- 交叉編譯-Mac環境使用NDK編譯FFmpeg編譯Mac
- 使用Reflector和Filedisassembler逆向編譯反編譯.cs.dll檔案程式碼編譯
- clang在編譯時指定目標檔案所需的最低macOS版本編譯Mac
- 輕鬆學會原始碼編譯Vim 8.0原始碼編譯
- Flink1.9.2原始碼編譯和使用原始碼編譯
- [譯]使用Go Cloud的Wire進行編譯時依賴注入GoCloud編譯依賴注入
- Android Apk 檔案反編譯和重新打包的過程分析AndroidAPK編譯
- Leptonica在VS2010中的編譯二,編譯 Leptonica1.68編譯
- A40i &T3 全原始碼編譯-ARM Linux核心在PC Linux的編譯方法原始碼編譯Linux
- Java編譯與反編譯Java編譯
- XCode 編譯 PAG 原始碼XCode編譯原始碼
- Docker編譯Azerothcore原始碼Docker編譯原始碼
- 原始碼編譯Vim 8原始碼編譯
- MongoDB(0)- 原始碼編譯MongoDB原始碼編譯
- Vue3原始碼分析——編譯模組和編譯器Vue原始碼編譯
- dll反編譯(修改引用檔案、修改程式碼)再生成dll編譯
- 求助 :ubuntu 編譯核心後(make -jn),sudo make modules_install報錯Ubuntu編譯