unix系統高階程式設計-uc(15)
unix系統函式為主-大量的unix系統呼叫
unix系統的原理-記憶體如何管理,程序如何設計……
培養大家的動手能力-能做一些有實際意義的軟體(商業開發)
建議:1.多動手,多寫程式,為現在招工作更方便。
2.有機會一定提公升自己的學歷,最好28,29歲左右開始公升研。
uc的主要內容:
1.unix/linux系統(了解)
2.c程式設計師的錯誤處理
3.unix的記憶體管理
4.unix程序管理
5.unix檔案處理和目錄處理函式
6.unix訊號處理
7.程序間通訊(ipc)
8.網路程式設計(socket)
9.多執行緒開發
其中,在day11和day15會有兩個綜合案例,需要大家完成
gcc編譯器(區分大小寫)
gcc -c:只編譯不連線,生成.o檔案
gcc -e:只做預處理,其他都不做
gcc -s:生成彙編檔案
gcc -o:修改目標檔名
gcc : 編譯+連線,生成可執行檔案,預設是a.out
gcc -wall:生成所有的警告資訊(提示**質量,少警告)
c程式的過程(從hello.c到a.out):
1 預處理 -針對所有的指令(以#開頭的),把指令換成純c語法
2 編譯 -檢查一些錯誤,進行編譯(狹義上的編譯)
3 彙編 -把高階語言轉換成組合語言
4 連線-就是把所有的資源打包生成可執行檔案
注:通常把預處理,編譯和彙編通常為編譯
計算機語言:機器語言-組合語言-高階語言,咱們學的都是高階語言。
c程式設計師會寫.c檔案(原始檔)和.h檔案(標頭檔案),各種宣告和定義都寫在標頭檔案中,各種實現和賦值都是寫在.c檔案中
比如:全域性變數的宣告可以寫在標頭檔案中,函式的原型宣告寫在標頭檔案中,結構的宣告,巨集的定義都寫在標頭檔案中;變數的賦值必須在原始檔中,函式的實現(**)必須在原始檔中。
注:標頭檔案中的內容遲早會被原始檔所包含和使用,因此寫在標頭檔案中的內容都可以直接寫在原始檔中,標頭檔案的意義在於可以被多個原始檔同時使用
標頭檔案一般都是按以下格式:
#ifndef 名字
#define 名字
……#endif(防止多次匯入標頭檔案)
#pragma 可以給程式加一些額外的附加功能,介紹三種:
#pragma gcc dependdency 檔名
就是把當前的檔案和指定檔案之間建立依賴關係,如果當前檔案最後修改時間比指定檔案新,就沒問題,否則就產生警告
現在基本都用版本控制軟體解決時間問題
#pragma gcc poison 識別符號或關鍵字
就是把後面的識別符號或關鍵字禁止使用
#pragma pack(數字)
針對結構體的對齊補齊
每個作業系統都有環境變數,環境變數是一系列的變數,系統在啟動時,會把一些常用的資料放入記憶體,其中有一部分就是環境變數。
程式執行的必備條件是:cpu負責運算,執行各種指令,但cpu不負責資料的儲存,資料的儲存是由記憶體或硬碟上的檔案負責
cpu可以直接訪問記憶體,但是不能直接訪問硬碟上的檔案,因此硬碟上的檔案必須先進入記憶體(載入)後才能被程式使用
記憶體中的資料一旦關機就會消失(通常意義上的),而硬碟上的檔案中的資料會永遠存在。
常用的環境變數:
path -系統路徑,一般情況下,檔案都必須帶上路徑才有效,存在path中的的路徑可以省略不寫。
配置環境變數可以使用**和命令實現,命令的實現:
在bash下,用命令:
export path=$path:.
就把.加入了path中。
可以使用echo $path檢視當前環境變數path的值
想要永久生效,必須把export path=$path:.寫入啟動檔案中,比如:/home/tarena/.bashrc
vi/home/tarena/.bashrc
unix和linux作業系統都是由核心和shell組成,直接操作核心不方便也不安全,shell就是使用者和核心的溝通橋梁,使用者操作shell,shell傳遞給核心完成功能。unix系統常用的shell有以下三種:
shell -最早的shell,但是不是很好用(過時產品)
bash -是shell的增強版,目前應用最廣
csh -是按c程式設計師的習慣寫的shell
目前大家的機器都是bash,(echo $shell可以看到shell)
系統的標頭檔案無需指定位置,自定義的標頭檔案如何定位?
1 「./檔名」中加目錄的方式可以找到,比如「../a/aa.h」
2 gcc 檔名 -i標頭檔案所在的目錄
3 配置環境變數cpath,把頭檔案所在的目錄放入cpath(export cpath=.)
C 編譯選項設定
附乙個不錯的鏈結 http support.microsoft.com kb 154419 zh cn 1,如果函式會被同專案內多個cpp引用時,一定記得加static,否則鏈結的時候會加多遍,鏈結出錯,提示已載入 2,載入其他lib檔案的路徑需要在工具 選項 專案和解決方案 vc 目錄 庫檔案中新...
VC編譯選項
vc編譯選項 od 禁用優化 預設值 disable optimizations default ox 最大化選項。ogityb2 gs maximum opts.ogityb1 gs og 啟用全域性優化 enable global optimization oy 啟用框架指標省略 enable ...
PHP編譯選項
編譯擴充套件庫 usr local php bin phpize configure with php config usr local php bin php config make make install ln s ext sockets modules sockets.so sockets....