首先開啟ndk的官網
選擇不受支援的舊版本。
將ndk的編譯路徑d:\android-ndk-rxx\prebuilt\windows-x86_64\bin;e:\androidcrack\platform-tools;
放到系統變數環境的path裡面
英文的。
開啟cmd 輸入make 若出現下面這樣則配置成功
到這裡配置就算完成了,接下來就是編譯了。
makefile的編寫執行
筆者在這裡用的是非蟲大佬在《android軟體安全與逆向分析》提供的makefile檔案修改而來,到目前為止還能用。筆者在pc端的安卓模擬器測試還能用。
makefile**如下:
ndk_root=d:\android-ndk-r17c #ndk 安裝解壓的目錄
toolchains_root=
$(ndk_root)
\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64
toolchains_prefix=
$(toolchains_root)
\bin\arm-linux-androideabi
toolchains_include=
$(toolchains_root)
\lib\gcc\arm-linux-androideabi\4.9.x\include-fixed
platform_root=
$(ndk_root)
\platforms\android-14\arch-arm
platform_include=
$(platform_root)
\usr\include
platform_lib=
$(platform_root)
\usr\lib
module_name=user
build_type=c
path_android=/data/local/tmp/
rm=del
flags=-i$(toolchains_include)
\ -i$(platform_include)
\ -l$(platform_lib)
\ -nostdlib \
-lgcc \
-bdynamic \
-lc \
-pie -fpie \
objs=
$(module_name)
.o \
$(platform_lib)
/crtbegin_dynamic.o \
$(platform_lib)
/crtend_android.o
all:
$(toolchains_prefix)
-gcc $(flags)
-e $(modale_name)
.c -o $(modale_name)
.i #產生 .i檔案
$(toolchains_prefix)
-gcc $(flags)
-c $(module_name)
.c -o $(module_name)
.o #產生 .o檔案
$(toolchains_prefix)
-gcc $(flags)
-s $(module_name)
.c -o $(module_name)
.s #產生 .s彙編檔案
$(toolchains_prefix)
-gcc $(flags)
$(objs)
-o $(module_name)
clean:
$(rm)
*.oinstall:
adb push $(module_name)
/data/local/tmp
adb shell chmod 755 /data/local/tmp/$(module_name)
adb shell /data/local/tmp/$(module_name)
run:
adb shell /data/local/tmp/$(module_name)
例子:
#include
intmain()
儲存放到同乙個資料夾
然後在位址 然輸入cmd 回車
輸入make
到這裡的話編譯已經完成我們開啟資料夾
接著開啟模擬器執行輸入
當你要再次執行時只需要輸入
make run找不到stdio.**件
only position independent executables (pie) are supported
解決方法:
找不到stdio.**件
這個問題只會出現在一些較高版本的ndk裡面,筆者用的是r17c也遇到了同樣的問題,筆者在這裡的解決方法是將r10e裡的 android-ndk-r10e\platforms\android-14\arch-arm\usr 裡的 include檔案 複製到 ==d:\android-ndk-r17c\platforms\android-14\arch-arm\usr == 裡面至此完美解決。
只需要在makefile裡的裡新增 == -pie -fpie \ ==
flags=-ikatex parse error: undefined control sequence: \ at position 22: …hains_include) \̲ ̲ -i(platform_include)參考文件:-l$(platform_lib)
-nostdlib
-lgcc
-bdynamic
-lc
-pie -fpie \
1.豐強生 《android軟體安全與逆向分析》
2.only position independent executables (pie) are supported的解決問題.
3ndk生成arm彙編(附**).
ndk 編譯 so檔案
使用ndk build編譯,如果windows需要cygwin環境,cygwin android ndk linux就好辦了 直接在專案路徑使用 ngk build指令碼就能編譯了 引用 一 準備工作 cygwin android ndk 二 安裝cygwin可以搜尋一下比較簡單。安裝時注意選擇包時...
AS編譯c c 生成so檔案
本文講如何用androidstudio生成so檔案 1.新建乙個android專案 2.新建乙個類,並新增native方法 3.生成class檔案4.開啟as的命令終端,輸入命令生成.h檔案 do not edit this file it is machine generated include ...
SO檔案的編寫,編譯,使用方法
linux下的.so檔案為共享庫,相當於windows下的dll檔案。在系統目錄 usr lib 下,我們可以看到很多應用程式庫檔案 常用的動態鏈結庫和軟體包的配置檔案 我們首先編寫簡單的兩個函式,然後把它編譯成so檔案 int max int a,int b int add int a,int b...