linux下程式編譯的四個階段:預處理、編譯、彙編、鏈結
gcc: gun c compiler 但現在不只侷限於c語言
預處理(preprocessing): gcc -e hello.c -o hello.i -e選項意思不曉得
1、在源程式中插入include包含的標頭檔案;
2、巨集定義的替換
編譯(compilation): gcc -s hello.i -o hello.s -s選項意思也不曉得
1、檢查**的規範性,語法錯誤等;
2、把預處理的檔案編譯成組合語言;
彙編(assembly): gcc -c hello.s -o hello.o -c選項意思也不曉得
1、將組合語言彙編彙編成機器語言(二進位制);
鏈結(linking): gcc hello.o -o hello
1、將彙編生成的檔案與相應的庫(動態庫,靜態庫)進行鏈結(確定動態庫檔案的位置),生成可執行的二進位制檔案;
1. ld會去找gcc命令中的引數-l
2. 再找gcc的環境變數library_path(命令列中檢視:echo $library_path )
3. 再找內定目錄 /lib 和 /usr/lib 和 /usr/local/lib 這是當初compile gcc時寫在程式內的
動態鏈結時、執行時搜尋路徑順序:
1. 編譯目標**時指定的動態庫搜尋路徑
2. 環境變數ld_library_path指定的動態庫搜尋路徑(命令列中檢視:echo $ld_library_path )
3. 配置檔案/etc/ld.so.conf中指定的動態庫搜尋路徑
4. 預設的動態庫搜尋路徑/lib
5. 預設的動態庫搜尋路徑/usr/lib
有關環境變數:在/etc/profile 或者 ~/.bash_profile設定
#在path中找到可執行檔案程式的路徑。
export path =$path:$home/bin
#gcc找到標頭檔案的路徑
c_include_path=/usr/include/libxml2:/mylib
export c_include_path
#g++找到標頭檔案的路徑
cplus_include_path=$cplus_include_path:/usr/include/libxml2:/mylib
export cplus_include_path
#找到動態鏈結庫的路徑
ld_library_path=$ld_library_path:/mylib
export ld_library_path
#找到靜態庫的路徑
library_path=$library_path:/mylib
export library_path
下面是在gcc命令中手動設定搜尋路徑:
#新增標頭檔案搜尋路徑
# gcc foo.c -i /home/xiaowp/include -o foo#新增動態庫搜尋路徑
# gcc foo.c -l /home/xiaowp/lib -lfoo -o foo#新增靜態庫搜尋路徑
# gcc foo.c -l /home/xiaowp/lib -static -lfoo -o foo
技術路徑的四階段
一階段,從0到1,萬事開頭難,一半人都倒在門外面,因為隔行如隔山,有共同的話語體系需要拋棄自己以前的思維慣勢,習慣於一種全新的體系,這需要內心足夠強烈的意願和外部的氛圍持續薰陶。二階段,從1到60,邁出了第一步還是外行,最後只有上階段的一半人擁有了正確的學習方法和能力,不僅如此,加上異於常人的堅持和...
Bete衝刺第四階段
web 昨晚搞得很晚,幫隊友搞定了git的問題,倉庫頓時乾淨多了,同時已經基本完成了基礎功能的介面 ios 匯入並使用了改善互動的第三方開源庫,修正路徑bug web 把伺服器的程式部署到阿里雲伺服器上是交給另一位隊員做的,因為之前為web開發怎麼讓他一起參與程式設計而苦惱。想來想去就讓他去研究部署...
iOS開發入門到精通四階段
分為四個階段,從ios開發入門基礎到ios ui設計再到ios高階專題,最後是ios專案實戰。是一套 ios開發從入門到到精通 的免費ios開發教程。第一階段 ios開發語言基礎 工欲善其事,必先利其器 本階段在講解ios開發語言之前,先來講述了ios開發環境的搭建,mac作業系統的使用,ios開發...