原创 Shell常用命令整理大全

1、   ls: 類似於dos下的dir命令 ls最常用的參數有三個: -a -l -F。 ls –a Linux上的文件以.開頭的文件被系統視爲隱藏文件,僅用ls命令是看不到他們的,而用ls -a除了顯示一般文件名外,連隱藏文件也會顯示

原创 快速編寫“專家級”makefile(4.打造更專業的編譯環境——增強可使用性)

    從前面看來,爲了編譯 huge 項目需要進入不同的目錄運行 make ,我們可以簡化它:     huge / build / Makefile .PHONY : all cleanROOT = $(realpath ..)D

原创 快速搞懂 ”ld“ ——鏈接器

    鏈接器的功能:將一個可執行程序所需的目標文件和庫最終整合在一起。     一個程序包含三個段:.text 、.data 和 .bss 段。     而各目標文件和庫都包含這三段,所以,ld 鏈接器的功能就是將各個目標文件

原创 快速編寫“專家級”makefile(4.打造更專業的編譯環境——改善編譯效率)

    對於大型項目,提高項目的編譯速度有着非常重要的意義。     從 Makefile 中看,一個可以改善編譯效率的地方與其中的隱式規則有關     隱式規則即:make 自帶的編譯規則,如生成 .o 文件的規則     %.o

原创 快速解析 棧和隊列

棧:     定義:         後進先出的線性表,只能在表尾進行刪除和插入操作         ——表尾:棧頂(top), 表頭:棧底(bottom)     棧的順序存儲結構:         

原创 快速區分 malloc calloc realloc

malloc:         malloc() 在內存的動態存儲區中分配一塊長度爲size字節的連續區域。參數size爲需要的內存空間的長度,返回該區域的地址     用法: char *pt = (char *)malloc

原创 快速編寫“專家級”makefile(3.提高編譯環境的實用性)

首先創建一個 complicated 項目: complicated / foo.h #ifndef __FOO_H#define __FOO_Hvoid foo();#endif complicated / foo.c #i

原创 快速編寫“專家級”makefile(4.打造更專業的編譯環境——管理對庫的依賴關係)

    對於前面的 Makefile , 當我們改動了 foo.c 文件時,會導致 libfoo.a 庫的重新編譯,但並沒有使得 huge.exe 重新編譯。原因是:我們只是指定了 huge.exe 生成時所需的庫,並沒有讓 huge.

原创 linux 進程內存解析

之前我所瞭解的linux下進程的地址空間的佈局的知識,是從APUE第2版的P430得來的,之後上網查了一些資料,大概弄了明白。一個linux進程分爲幾個部分(從一個進程的地址空間的低地址向高地址增長): 1.text段,就是存放代碼,可

原创 字節序與邊界對齊

字節序:         32位處理器每次處理 4 個字節。         當數據類型大於1個字節時,其在內存中的順序存在兩種模式:             (1)小端:低字節放在低地址             (2)大端:低字

原创 詳述線性表(單鏈表,雙鏈表,靜態鏈表和循環鏈表)

線性表:由零個或多個數據元素組成的有限序列。     關鍵點: 有限序列第一個元素有且僅有一個前驅結點,最後一個與元素有且僅有一個後繼結點,中間元素有一個前驅結點和一個後繼結點線性表可以有零個數據元素,稱作空表 線性表分爲順序

原创 快速編寫“專家級”makefile(2.創建基本編譯環境-使用功能”函數“)

1.abspath     功能:將 _names 中的各路徑名轉換成絕對路徑    形式:$(abspath _names)    返回值:返回轉換結果實例: .PHONY : all ROOT := $(abspath /u

原创 快速解析數據結構

數據結構: 程序設計 = 數據結構 + 算法; 數據結構分爲:邏輯結構 和 物理結構 邏輯結構:數據對象中元素間的對應關係 物理結構:數據在計算機中的存儲形式 邏輯結構: 集合結構:同屬於同一集合,並沒有其他關係線性結構:數據元素之

原创 快速編寫“專家級”makefile(4.打造更專業的編譯環境——支持頭文件目錄的指定)

現將項目文件放入各目錄中: huge / code / foo / inc / foo.h #ifndef __FOO_H#define __FOO_Hvoid foo();#endif huge / code / foo / i

原创 快速編寫“專家級”makefile(4.打造更專業的編譯環境)

    前面的 simple 和 complicated 項目都是採用了單一的目錄結構,但大型的項目往往用多個目錄來存放不同的模塊。下面我們通過 huge 項目來模擬一個更加專業的編譯環境。     下圖說明了 huge 項目將採用的目