編譯系統html
- 預處理器(cpp)————將源程序進行修改,將.c文件轉換成.i文件。命令示例(-E):gcc -E hello.c -o hello.i - 編譯器(ccl)————將.i文件轉換成.s文件。命令示例(-S):gcc -S hello.i -o hello.s - 彙編器(as)————將文件翻譯成機器語言指令。命令示例(-c):gcc -c hello.s -o hello.o - 連接器(ld)————生成可執行目標程序。命令示例:gcc hello.o -o hello
-I參數:.h文件放入include中, .c文件放入src中。由 gcc c -o main (一塊兒編譯因此.c文件)後找不到 head.h 文件。緣由是 head.h 文件放到了另外一個文件夾中,編譯器找不到。此時,輸入 gcc -I /頭文件所在路徑 .c -o main 指明路徑便可。git
makefile隱含規則:它是一種慣例,make會按照這種「慣例」自動運行,就算咱們在Makefile中沒有書寫這樣的規則數據庫
動態連接器:緩存
- 重定位 libc.so 的文本和數據到某個內存段 - 重定位 libvector.so 的文本和數據到另外一個內存段 - 重定位 prog21 中全部對由 libc.so 和 libvector.so 定義的符號的引用
在學習gcc的時候,提到了靜態數據庫和動態數據庫,一下沒太懂它們的意思。安全
上網發現了一個大佬在CSDN上寫了一篇關於它們的介紹——點擊進入連接,大體就瞭解了一些:微信
靜態庫:
是指編譯連接時,把庫文件的代碼所有加入到可執行文件中,所以生成的文件比較大,但在運行時也就再也不須要庫文件了。其後綴名通常爲」.a」。函數
動態庫:
與之相反,在編譯連接時並無把庫文件的代碼加入到可執行文件中,而是在程序執行時由運行時連接文件加載庫,這樣能夠節省系統的開銷。動態庫通常後綴名爲」.so」,gcc/g++在編譯時默認使用動態庫。不管靜態庫,仍是動態庫,都是由.o文件建立的。學習
在看教程的第七章第十節的動態連接共享庫時,不理解共享庫實現共享的兩種方式。操作系統
這個問題尚未徹底解決,主要是感受第七章內容學起來有些艱難,以及不少知識點都不太理解。在網上看到了一個隨筆,是關於Linux共享庫、靜態庫、動態庫的詳細介紹的,我看了以後,仍是不太理解,但稍微瞭解到了這三個庫的基本知識。點擊進入連接.net
問題1:沒有安裝gcc
問題1解決方案:直接根據提示install就行
問題2:git push失敗
問題2解決方案:
(1)試試強制 git push ,結果仍是不行
(2)系統提示不一樣步,因此先pull,再合併後進行push,即先輸入 git pull --rebase origin master ,而後輸入 git push -u origin master ,便可。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 99/99 | 2/2 | 22/22 |
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
計劃學習時間:20小時
實際學習時間:22小時
改進狀況:無
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)