use makefile on android-linux
来源:互联网 发布:禁止系统安装软件 编辑:程序博客网 时间:2024/06/05 20:06
试验环境
NDK是android-ndk-r10e x86版本
OS : win7X64Sp1
设置环境变量
将 D:\android-ndk-r10e\prebuilt\windows\bin 加入环境变量
测试一下make.exe是否可用
写原始的makefile
最原始的makefile内容和命令行直接敲或搞一个Windows批处理文件差不多. 写法和批处理差不多.
但是当编译关系复杂后,使用makefile维护工程的编译比批处理好很多.
#测试用make命令行编译makefile, 用来产生在真机中可以运行的android-linux程序all: D:/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/bin/arm-linux-androideabi-gcc.exe \ -ID:/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.9/include-fixed \ -ID:/android-ndk-r10e/platforms/android-19/arch-arm/usr/include \ -LD:/android-ndk-r10e/platforms/android-19/arch-arm/usr/lib \ -nostdlib \ -Bdynamic \ -lc \ -lgcc \ -c hw.c -o hw.o D:/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/bin/arm-linux-androideabi-gcc.exe \ -ID:/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.9/include-fixed \ -ID:/android-ndk-r10e/platforms/android-19/arch-arm/usr/include \ -LD:/android-ndk-r10e/platforms/android-19/arch-arm/usr/lib \ -nostdlib \ -Bdynamic \ -lc \ -lgcc \ hw.o \ D:/android-ndk-r10e/platforms/android-19/arch-arm/usr/lib/crtbegin_dynamic.o \ D:/android-ndk-r10e/platforms/android-19/arch-arm/usr/lib/crtend_android.o \ -o hwclean: cls del hw.o del hw
make原始的makefile效果
按照makefile规则,写.o依赖关系
#测试用make命令行编译makefile, 用来产生在真机中可以运行的android-linux程序#规则需要的依赖文件(.o, .c, .cpp, .h) 需要在规则:符号后列出, 多个依赖文件之间用' '空格符号分隔, 换行用'\'#终极目标 : 第一个规则名称是终极目标all: hw.o D:/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/bin/arm-linux-androideabi-gcc.exe \ -ID:/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.9/include-fixed \ -ID:/android-ndk-r10e/platforms/android-19/arch-arm/usr/include \ -LD:/android-ndk-r10e/platforms/android-19/arch-arm/usr/lib \ -nostdlib \ -Bdynamic \ -lc \ -lgcc \ hw.o \ D:/android-ndk-r10e/platforms/android-19/arch-arm/usr/lib/crtbegin_dynamic.o \ D:/android-ndk-r10e/platforms/android-19/arch-arm/usr/lib/crtend_android.o \ -o hw#被依赖的.o 编译规则 hw.o: hw.c D:/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/bin/arm-linux-androideabi-gcc.exe \ -ID:/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.9/include-fixed \ -ID:/android-ndk-r10e/platforms/android-19/arch-arm/usr/include \ -LD:/android-ndk-r10e/platforms/android-19/arch-arm/usr/lib \ -nostdlib \ -Bdynamic \ -lc \ -lgcc \ -c hw.c#伪目标 clean: cls del hw.o del hw
在makefile中,重构,整理变量
已经测试过了,运行正常,可维护性更好
#测试用make命令行编译makefile, 用来产生在真机中可以运行的android-linux程序#用法# make 显示帮助# make clean => 清除垃圾# make all => 重新建立工程所有输出文件#规则需要的依赖文件(.o, .c, .cpp, .h) 需要在规则:符号后列出, 多个依赖文件之间用' '空格符号分隔, 换行用'\'#------------------------------------------------------------#定义变量, 必须在变量被用到之前, 提前定义#------------------------------------------------------------NDK_ROOT_DIR := D:/android-ndk-r10eNDK_PLATFORMS_DIR := $(NDK_ROOT_DIR)/platformsNDK_TOOLCHAINS_DIR := $(NDK_ROOT_DIR)/toolchainsNDK_PLATFORMS := $(NDK_PLATFORMS_DIR)/android-19/arch-arm/usrNDK_PLATFORMS_INC := $(NDK_PLATFORMS)/includeNDK_PLATFORMS_LIB := $(NDK_PLATFORMS)/libNDK_PREBUILT := $(NDK_TOOLCHAINS_DIR)/arm-linux-androideabi-4.9/prebuilt/windowsNDK_PREBUILT_INC := $(NDK_PREBUILT)/lib/gcc/arm-linux-androideabi/4.9/include-fixedCRT_BEGIN_IMP := $(NDK_PLATFORMS_LIB)/crtbegin_dynamic.oCRT_END_IMP := $(NDK_PLATFORMS_LIB)/crtend_android.oNDK_GCC_PROG := $(NDK_PREBUILT)/bin/arm-linux-androideabi-gcc.exeCOMPILER_OPTIONS := \ -I$(NDK_PREBUILT_INC) \ -I$(NDK_PLATFORMS_INC) \ -L$(NDK_PLATFORMS_LIB) \ -nostdlib \ -Bdynamic \ -lc \ -lgcc#------------------------------------------------------------# 终极目标 : 第一个规则名称是终极目标# 帮助#------------------------------------------------------------no_make_paramter: @echo usage: @echo make all : build all @echo make clean : remove trash#------------------------------------------------------------#被依赖的.o 编译规则#------------------------------------------------------------#------------------------------------------------------------# hw.c#------------------------------------------------------------HW_O_IMP := hw.cHW_O_OUT := hw_c.o$(HW_O_OUT): $(HW_O_IMP) $(NDK_GCC_PROG) \ $(COMPILER_OPTIONS) \ -c $(HW_O_IMP) \ -o $(HW_O_OUT)#------------------------------------------------------------# 因为定义变量后,有执行的先后顺序, 必须执行 make all 才能到这#------------------------------------------------------------#工程最终输出文件名称, 测试过了, 可以改成自己想要的PRJ_OUT := hwOBJECTS := $(HW_O_OUT)all: $(OBJECTS) $(NDK_GCC_PROG) \ $(COMPILER_OPTIONS) \ $(HW_O_OUT) \ $(CRT_BEGIN_IMP) \ $(CRT_END_IMP) \ -o $(PRJ_OUT)#------------------------------------------------------------# 伪目标# make clean : 清除垃圾#------------------------------------------------------------.PHONY:clean clean: cls del $(HW_O_OUT) del $(PRJ_OUT)
0 0
- use makefile on android-linux
- Use Glances on Linux
- use of at on linux
- use lib function on linux with C
- How to use vi on linux
- How to use Samba on Linux?
- How to use Screen on Linux
- how to use systemctl on linux(debian)
- use gdb on Android to debug mediaserver
- How to use tcpdump on Android
- How to use unity CreateExternalTexture on Android?
- How to use on-screen virtual keyboard on Linux
- How to use rar in console on linux.
- About install linux ON virtual PC by use of VMware
- Use ADSL connect to internet on Linux OS
- How to Configure, Install and Use libnefilter_queue on Linux
- How to use 7zip on Linux command Line
- use JDBC connact postgres on os of linux and windows
- 2016-5-29:实验室第四天
- ListView 头部ViewPager广告轮询图效果
- NumPy 数组组合分割
- 苹果Swift编程语言入门教程【中文版】
- c++11笔记
- use makefile on android-linux
- 集合类的简介
- PopupWindow设置其他Activity变暗的效果
- 输出响应的数据给客户端并结束请求,继续执行后面的代码
- Leetcode - 14. Longest Common Prefix
- 第七届河南省程序设计大赛
- Codeforces Round #326 (Div. 1)A. Duff and Weight Lifting
- Java千百问_03基础语法(012)_transient关键字有什么用
- redis事件