先編寫hello程式
建立工作目錄,mkdir hello_test
新建 hello.c 檔案 touch hello.c
可以用 gedit hello.c 也可以用vi hello.c
開啟檔案後,輸入如下**
int main(int argc,char **ar**)//在一些編譯器中,這行**自動生成
else
return 0;
}以上**可以直接編譯連線成可執行檔案
輸入 gcc -o hello hello.c 這樣直接生成 hello的可執行檔案
在 終端 輸入 ./hello 就列印 hello world! 輸入 ./hello xiaoyige 終端就列印 hello xiaoyige
gcc也可以用交叉編譯工具代替,這樣編譯的hello檔案就可以執行在相關開發板上
比如 aarch64-linux-gnu-gcc -o hello hello.c
編譯兩個.o檔案
我們新建乙個hello1.c檔案,同時將hello.c檔案修改為如下
#include 「stdio.h」
char hello();
int main(int argc,char **ar**)
else
return 0;
}hello1.c如下
#include 「stdio.h」
char hello()
一起編譯可以生成hello可執行檔案,命令 gcc -o hello hello.c hello1.c
分開編譯 生成hello.o 命令 gcc -c -o hello.o hello.c
再生成 hello1.o 命令 gcc -c -o hello1.o hello1.c
生成hello可執行檔案 命令 gcc -o hello hello.o hello1.o
下面介紹如何生成.a靜態庫
輸入命令 gcc -c -o hello.o hello.c
這樣在hello_test目錄下生成 hello.o檔案
再輸入命令 ar crs hello.a hello.o
再hello_test目錄下生成hello.a檔案
再輸入 命令 gcc -o hello hello.o hello.a可以生成hello可執行檔案
可以測試一下,輸入 ./hello 則列印hello world!
輸入 ./hello xiaoyige 列印出 hello xiaoyige
當然,也可以用多個檔案生成乙個.a靜態庫,命令是ar crs hello.a hello.o hello1.o
輸入 gcc -o hello hello.o hello1.o hello.a生成hello可執行檔案
下面介紹如何生成.so動態庫
我們將hello1.c生成 .so庫,由hello.c呼叫
用生成.a的 兩個.o檔案直接生成 .so庫時,輸入生成.so庫檔案命令 gcc -shared -o hello.so hello1.o
會報如下錯誤
/usr/bin/ld: hello.o: relocation r_x86_64_32 against.rodata' can not be used when ****** a shared object; recompile with -fpic /usr/bin/ld: hello1.o: relocation r_x86_64_32 against
.rodata』 can not be used when ****** a shared object; recompile with -fpic
/usr/bin/ld: final link failed: nonrepresentable section on output
collect2: error: ld returned 1 exit status
參考部落格 中的方法
將 資料夾中的 兩個.o檔案刪除,用如下命令重新生成 .o檔案
生成 hello.o 命令 gcc -fpic -c -o hello.o hello.c
生成hello1.o 命令 gcc -fpic -c -o hello1.o hello1.c
這樣 重新生成了 hello.o和hello1.o兩個檔案 ,再輸入以下命令
gcc -shared -fpic -o libhello.so hello1.o(我們使用.so庫時通常以lib開頭)
這樣就生成了 libhello.so動態庫檔案
生成hello可執行檔案 命令,參考部落格
輸入命令
gcc -o hello hello.o ./libhello.so
測試 hello可執行檔案與上述結果一致
將hello copy到桌面測試cp -r hello /home/xiaoyige/desktop/
執行hello時 ./hello出現如下錯誤
./hello: error while loading shared libraries: ./libhello.so: cannot open shared object file: no such file or directory
我們將上述生成的 libhello.so複製到桌面 cp -r libhello.so /home/xiaoyige/desktop/,hello就可以執行了
或者這時我們將上面生成的libhello.so複製到usr/local/lib目錄下
以GNU的hello為例演示製作rpm包的方法
本文的演示示例中用到的系統平台是rhel5.4。製作rpm包需要用到開發發工具,這裡可以通過基於yum安裝 development tools 和 development libraries 兩個開發組來進行安裝。同時,本文只是乙個製作示例,以gnu的hello來演示製作過程。1 製作rpm包要以普...
C 簡單遊戲外掛程式製作 以Warcraft 為例
一 宣告windows api 中的函式和常量 鍵盤hook結構函式 structlayout layoutkind.sequential public class keyboardhookstruct region dllimport 設定鉤子 dllimport user32.dll chars...
C 簡單遊戲外掛程式製作 以Warcraft 為例
網上有很多外掛程式製作的教程,大多是講針對大型網路遊戲的,主要包含一些抓包 反彙編 c 的知識綜合。事實也如此,常見的外掛程式都是使用vc 寫的,從來沒有過c 或者其他.net語言編寫的外掛程式。其實作為遊戲外掛程式來說,主要就是三個功能 模擬鍵盤操作 模擬滑鼠操作 修改記憶體資料。修改記憶體資料比...