編譯基礎知識

2021-10-12 03:12:58 字數 1282 閱讀 6954

cpp生成可執行程式:

g++ test.cpp -o test

靜態庫gcc -c cjson.c

ar rcs libcjson.a cjson.o

動態庫gcc -c -o cjson.o -fpic cjson.c

gcc -shared -o libcjson.so cjson.o

或直接連寫:

gcc -shared -fpic -o libcjson.so cjson.c

我們用gcc編譯程式時,可能會用到「-i」(大寫i),「-l」(大寫l),「-l」(小寫l)等引數,例:

gcc -o hello hello.c -i /home/hello/include -l /home/hello/lib -lworld
-i /home/hello/include表示將/home/hello/include目錄作為第乙個尋找標頭檔案的目錄,尋找的順序是:/home/hello/include-->/usr/include-->/usr/local/include-l /home/hello/lib表示將/home/hello/lib目錄作為第乙個尋找庫檔案的目錄,尋找的順序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib-lworld表示在上面的lib的路徑中尋找libworld.so動態庫檔案(如果gcc編譯選項中加入了「-static」表示尋找libworld.a靜態庫檔案)

cflags 表示用於 c 編譯器的選項,cxxflags 表示用於 c++ 編譯器的選項。這兩個變數實際上涵蓋了編譯和彙編兩個步驟。

簡單地說,ldflags是告訴鏈結器從**尋找庫檔案,而libs是告訴鏈結器要鏈結哪些庫檔案。不過使用時鏈結階段這兩個引數都會加上,所以你即使將這兩個的值互換,也沒有問題。

ldflags = -l/var/***/lib -l/opt/mysql/lib -wl,r/var/***/lib -wl,r/opt/mysql/lib
gcc總體選項列表:

gcc的告警和出錯選項如下所示:

反編譯基礎知識

嚴正宣告 本文相關反編譯技術僅限於技術研究使用,不能用於非法目的,否則後果自負.apktool 逆向apk檔案的工具 官方 apktool主要用於逆向apk檔案,可以將資源解碼,並在修改之後可以重新構建它們.它還可以用來重新構建apk.1.1 功能 將資源解碼成近乎原始的形式 包括resources...

《基礎知識 編譯與底層》

對於c 原始檔,從文字到可執行檔案一般需要四個過程 1 預處理階段 對源 檔案中檔案包含關係 標頭檔案 預編譯語句 巨集定義 進行分析和替換,生成預編譯檔案。2 編譯階段 將經過預處理後的預編譯檔案轉換成特定彙編 生成彙編檔案 3 彙編階段 將編譯階段生成的彙編檔案轉化成機器碼,生成可重定位目標檔案...

編譯原理 編譯程式基礎知識

本文主要講的什麼是編譯程式,編譯的各個階段 源語言是像fortran pascal或c那樣的高階語言,目標語言是像組合語言或機器語言那樣的低階語言,這種翻譯程式就叫做編譯程式 翻譯程式 就是把一種語言 稱為源語言 書寫的程式翻譯成另外一種語言 稱為目標語言 的等價程式。預處理 乙個源程式可能分成幾個...