
Android.mk&&Makefile
Android系统攻城狮
《Android系统多媒体进阶实战》一书作者
展开
-
Makefile使用shell设置的变量
【代码】Makefile使用shell设置的变量。原创 2023-01-13 11:35:39 · 459 阅读 · 0 评论 -
Makefile之=、:=、?=、+=区别
【代码】Makefile之=,:=,?=,+=区别。原创 2023-01-13 17:30:44 · 215 阅读 · 0 评论 -
Android.mk调用bin/shell
1.Android.mk# emacs Android.mk#获取Android目录相对路径LOCAL_PATH := $(call my-dir)#获取host主机绝对路径OPTEE_TEST_PATH := $(shell pwd)/$(LOCAL_PATH)$(info $(LOCAL_PATH))$(info $(OPTEE_TEST_PATH))$(info "111111111111111111111111111111111")# OK$(shell cp $(LO.原创 2021-12-20 15:14:16 · 2094 阅读 · 0 评论 -
Makefile之eval与call用法
.PHONY : all#notdir,从全路径的文件名,提取出文件名称。相当于shell的basename#subst,字符串替换#foreach,对数组中的每一个元数做处理#call,调用自定义宏,函数调用而已.#eval,将字串应用到Makefile上下文,展开表达式#shell,执行shell脚本define func1var1 := $(0)var2 := $(1)var3 := $(2)var4 := $3endefdefine func2@echo "S.原创 2021-08-01 20:51:58 · 1327 阅读 · 0 评论 -
Android.mk之include使用
1.test.cpp#define LOG_TAG "binder_demo"#include <stdlib.h>#include <utils/Log.h>//using namespace android;int main() {#ifdef DEBUG ALOGE("Android.mk is define DEBUG");#else qqqq ALOGE("Android.mk is not define DEBUG");#endif ret.原创 2021-05-25 19:41:22 · 2028 阅读 · 0 评论 -
Android8.1 swap空间不够编译失败:ckati failed with: signal: interrupt
1.Android8.1编译报错log:19:01:29 Got signal: interrupt19:01:29 ckati failed with: signal: interrupt2.解决:增加swap分区内存增加40个G的交换空间# cd /# sudo dd if=/dev/zero of=/swp bs=10M count=400# sudo mkswap /swp# sudo swapon /swp//查看交换空间的情况# free -m这个方法增加的是临时.原创 2021-05-19 19:17:19 · 772 阅读 · 0 评论 -
make install到指定安装目录
1.Makefile工程# make install DESTDIR=/path2.QT工程make install INSTALL_ROOT=/path3.ninja工程DESTDIR=/path ninja -C . install注意:./path为绝对路径原创 2020-12-22 17:33:47 · 14144 阅读 · 0 评论 -
Android编译32/64位so or bin(八十)
开发的时候,分析Android系统时发现有的是64或者32位,这样就要按照系统类型分别来编译来构建你所需要的工具.1.Android.mk# 32 and 64 bitLOCAL_MULTILIB := both# 32 bitLOCAL_MULTILIB := 32# 64 bitLOCAL_MULTILIB := 64...原创 2019-12-18 11:52:15 · 8017 阅读 · 1 评论 -
android使用ALOGE(六十六)
1.test.c#include <utils/Log.h>#define LOG_TAG "test" ALOGE(“%s(), %d”,__FUNCTION,__LINE__);2.Android.mkLOCAL_SHARED_LIBRARIES:= libcutils libutils liblog原创 2017-11-28 21:23:36 · 16901 阅读 · 0 评论 -
解决: Android.bp ninja: error: unknown target MODULES-IN-xxx报错
解决方案:将Android.bp修改为Android.mk实现即可.栗子:# emacs Android.mkLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES := led_client.cppLOCAL_MODULE := led_client_demoLOCAL_MODULE_TAGS := optinalLOCAL_SHARED_LIBRARIES := liblog libutils libhardw.原创 2020-06-01 20:23:02 · 7347 阅读 · 1 评论 -
Linux之/dev/null用法(十二)
分解:">/dev/null 2>&1"1:/dev/null 代表空设备文件1:1 表示stdout标准输出;系统默认值是1,所以">/dev/null"等同于 "1>/dev/null"2:2 表示stderr标准错误4:& 表示等同于的意思,2>&1,表示2的输出重定向等同于1...原创 2018-12-27 17:54:05 · 1496 阅读 · 0 评论 -
Android9.0编译系统原理
点击前往原创 2020-03-30 23:22:18 · 731 阅读 · 0 评论 -
Android7.1以上PRODUCT_COPY_FILES拷贝失败解决
1.emacs Android.mk$(warning $(TARGET_OUT_APPS)/123)$(warning $(LOCAL_PATH)/test)#$(shell mkdir -p $(TARGET_OUT_APPS)/123)//将本目录下test文件夹拷贝到out/.../system/app/123目录下$(shell cp -rf $(LOCAL_PATH)/t...原创 2020-03-20 15:51:44 · 2335 阅读 · 1 评论 -
Android9.0 Android.bp添加宏开关demo
1.test.cpp#define LOG_TAG "test_demo"#include <stdlib.h>#include <stdio.h>#include <utils/Log.h>int main(){#ifdef DEBUG ALOGE("Android.mk is define DEBUG"); printf("Andro...原创 2020-03-19 19:31:37 · 1534 阅读 · 1 评论 -
Android编译系统介绍
1. 编译系统变化Android 最初是用 Android.mk 来定义模块的, Android.mk 本质上就是 Makefile。随着 Android 工程越来越大,包含的模块越来越多,以 Makefile 组织的项目编译花费的时间越来越多。google 在 Android 7.0 开始引入了 ninja 编译系统。相对于 make 来说 ninja 在大的项目管理中速度和并行方面有突出的...转载 2020-03-18 15:56:11 · 1940 阅读 · 0 评论 -
ckati与ninja构建demo
1.编译出ckati工具# git clone https://github.com/google/kati# make -j8# sudo cp ckati /usr/local/bin2.ckati与ninja构建过程<1>.内容一致(注意:ckati默认找Makefile,可以ckati -f Android.mk指定)# emacs Android.mk or ...原创 2020-03-18 15:08:57 · 1090 阅读 · 0 评论 -
Android7.0以后的ninja编译系统
1、Ninja: 用于提高编译速度的编译系统。 可执行文件位于 prebuilts/ninja/linux-x86/ninja2、Kati: 用于把Makefiel转成成ninja file,自身没有编译能力,转换后使用Ninja编译。 源代码位于: build/kati 可执行文件会被生成到: out/host/linux-x86/bin/ckati 使用方法可参考 README...原创 2018-04-03 13:19:08 · 2207 阅读 · 0 评论 -
Makefile、.mk、.bp、Blueprint、Soong、kati工具链的关系
生成.ninja工具链关系:Android.bp、Blueprint、Soong、kati:总之都是用来把Makefile、.bp、.mk生成.ninja的,只是用了不同的工具生成而已.1.Android.bp --> Blueprint --> Soong --> Ninja2.Makefile or Android.mk --> kati --> Ninj...原创 2020-03-16 19:01:07 · 1254 阅读 · 0 评论 -
Fuchsia中GN与Ninja构建demo
# sudo apt-get install clang# git clone git@github.com:MeekJeen/GN.git //解压# cd GN# python3 build/gen.py //本目录下生成out目录# ninja -C out //生成gn# cd examples/simple_build# ../../out/gn gen out/defau...原创 2020-03-16 18:30:10 · 659 阅读 · 0 评论 -
Clang与LLVM的关系
LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。LLVM计划启动于2000年,最初由University of Illinois at Urbana-Champaign的Chr...转载 2020-03-16 16:04:52 · 1391 阅读 · 0 评论 -
Android/Linux之编译开关使用(三十)
1.代码结构├── Makefile├── dependent│ └── test.c└── main.c2.Makefile$(CC) = gccCFLAGS:= -Werror -std=c99ENABLED_TEST:=true #通过控制此开关,达到是否加入自己代码部分ifeq ($(strip $(ENABLED_TEST)),true)CFLAGS+=-D...原创 2019-12-11 11:28:29 · 559 阅读 · 0 评论 -
Android项目持续集成之Jenkins的使用
原址Jenkins拥有的特性包括: 1. 易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。 2. 易于配置-所有配置都是通过其提供的web界面实现。 3. 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。 4. 生成JUnit/TestNG测试报告。 5. 分布式构建支持Jenkins能够让多台计算机一起构建/测试。...转载 2018-07-25 16:07:10 · 937 阅读 · 0 评论 -
Android源码编译到/data/app方法(四十二)
Android.mkLOCAL_MODULE_TAGS := tests注意:user-debug: 指该模块只在user版本下才编译/system/apptests: 指该模块只在tests版本下才编译到/data/appoptional:指该模块在所有版本下都编译到/system/app...原创 2018-06-12 14:56:49 · 1603 阅读 · 0 评论 -
android7.0 Jack编译器报错解决
报错:Communication error with Jack server (58), try 'jack-diagnose' or see Jack server log0.查看jack-server报错原因jack-server输出log位置:~/.jack-server/logs/1.修改权限chmod 600 .jackchmod 600 .jack-settings...原创 2017-12-07 11:13:46 · 1831 阅读 · 0 评论 -
Android.mk 使用 环境 小结
一、将无源码的 APK 和它 依赖的库预置进系统,此apk可以升级二、++++++++++++++++++++++++++++++一、将无源码的 APK 和它 依赖的库预置进系统,此apk可以升级---------- cut here ------------------LOCAL_PATH := $(call my-dir)#预置aliuyi.apkinc转载 2016-05-16 15:49:16 · 508 阅读 · 0 评论 -
Linux之简单调用so库及Makefile用法(九)
1.test.h#include <stdio.h>//函数指针typedef int (*ADD)(int,int);2.test.c#include <stdio.h>int add(int a, int b){ printf(".PHONY 测试!\n"); return (a + b);}3.测试程序main.c#include &l...原创 2018-12-18 19:25:43 · 3602 阅读 · 0 评论 -
Android.mk转换到Android.bp方法(二十九)
1.源码在:build/soong/androidmk2.编译源码后,androidmk生成工具位置# out/soong/host/linux-x86/bin/androidmk3.使用命令栗子:Android.mkLOCAL_PATH:= $(call my-dir) ...原创 2019-02-20 16:30:09 · 6636 阅读 · 2 评论 -
Linux之设置交叉编译器环境(七)
1./etc/profile添加内容# emacs /etc/profile# export PATH=$PATH:/home/prebuilts/gcc/linux-x86/aarch64/arch64-linux-gnu/bin# source /etc/profile原创 2019-03-27 13:53:55 · 916 阅读 · 1 评论 -
Android使adb作为host运行在arm64平台(二十七)
交叉编译adb-tools# souce build/envsetup.sh# lunch user-debug一、交叉编译openssl库1.下载openssl# git clone https://github.com/openssl/openssl.git2.编译# mkdir output# ./config no-asm -shared --prefix=$(pwd...原创 2019-04-02 16:54:41 · 3175 阅读 · 1 评论 -
Android通用编译脚本(十二)
#!/bin/bash# usage: # ./build-common.sh TEST-AUDIO# generate: packages-TEST-AUDIO-test-eng-master-2011-02-17-19-42-09.tar.gz#OpenJDK 1.7 or OpenJDK 1.8;Need install OpenJDK 1.7 and OpenJDK 1.8 b...原创 2019-07-17 19:43:44 · 454 阅读 · 0 评论 -
Android.mk/Makefile/Cmake/Makefile.am打印log(十)
1.Android.mk $(info "--------------before------------------")TEST_MODULE_SUPPORT := yes //定义宏ifeq ($(strip $(TEST_MODULE_SUPPORT)),yes) $(warning "--------------after-----------------")endif...原创 2019-07-31 13:11:56 · 2329 阅读 · 1 评论 -
Android.mk宏定义demo
1.Android.mkLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := binder_demo_showLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := test.cppLOCAL_CFLAGS += -DDEBUG#LOCAL_CFLAGS原创 2017-05-27 19:11:15 · 2541 阅读 · 1 评论 -
Android.mk的一些FAQ
基本语法1. :=是赋值的意思,+=是追加的意思,$是引用某变量的值2. 清理所有已经设定好的变量 include $(CLEAR_VARS)支持的编译目标? 1)APK程序,一般的Android程序,编译打包生成apk文件 2)JAVA库,java类库,编译打包生成jar文件 3) C\C++应用程序,可执行的C\C++应用程序 4)C\转载 2017-06-09 15:49:50 · 431 阅读 · 0 评论 -
Android.mk中的LOCAL_OVERRIDES_PACKAGES
关于Android.mk中的LOCAL_OVERRIDES_PACKAGES需要说明一下,此变量可以使其他的模块不加入编译,如: 源码中DeskClock的android.mk有LOCAL_OVERRIDES_PACKAGES := AlarmClock注意:使 AlarmClock不会加入到编译系统中,不会生成 AlarmClock.apk。原先我是死活不明白会什么有转载 2016-06-14 09:42:42 · 1504 阅读 · 0 评论 -
理解Android编译命令
一、引言关于Android Build系统,这个话题很早就打算整理下,迟迟没有下笔,决定跟大家分享下。先看下面几条指令,相信编译过Android源码的人都再熟悉不过的。source /opt/android1204_17.conf source setenv.shlunchmake -j12记得最初刚接触Android时,同事告诉我用上面的指令就可以编译Andr转载 2016-05-12 15:04:58 · 690 阅读 · 0 评论 -
Makefile中常用的函数
在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。一、函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下: $()或是 ${}这里,就是函数名,make支持的函数不多。是函数的参数,参转载 2016-05-16 16:57:36 · 344 阅读 · 0 评论 -
makefile中的patsubst
1、wildcard : 扩展通配符2、notdir : 去除路径3、patsubst :替换通配符例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd test$ mkdir sub在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件建立一个简单的Makefile转载 2016-05-16 16:37:52 · 706 阅读 · 0 评论 -
Makefile之 .PHONY 作用
Makefile之 .PHONY 作用 ./PHONY 来显示的指名一个目标是伪目标,有两个作用一个是改善性能,另外一个是来避免冲突。例如我写了这样一个Makefile[cpp] view plain copytest1:main.o file1.o file2.o file3.o cc -o t转载 2016-03-12 16:46:43 · 505 阅读 · 0 评论 -
Android.mk中call all-subdir-makefiles和call all-makefiles-under,$(LOCAL_PATH)的区别
Android.mk中call all-subdir-makefiles和call all-makefiles-under,$(LOCAL_PATH)的区别 在写Android.mk文件时,call all-subdir-makefiles和call all-makefiles-under,$(LOCAL_PATH)是有区别的。 前者表示“当前目录下没有转载 2016-03-16 10:53:36 · 2694 阅读 · 0 评论 -
深入分析Android (build/core/*.mk脚本)
深入分析Android (build/core/*.mk脚本)文档简要整理Android的make脚本的内容。以供备忘和参考。1. Build LayersBuild Layers描述的是产品的硬件配置情况,据此make时选择不同的配置和模块。按照从上到下的顺序,Build Layer分成4层。Layer sample NoteArch转载 2016-03-15 23:52:19 · 894 阅读 · 0 评论