Android源码Makefile分布统计

C++实战项目合集:覆盖后端、音视频、嵌入式等硬核领域,助力校招简历与技能提升 C++作为高性能系统开发的核心语言,其价值在于通过底层资源控制和高效内存管理,构建稳定可靠的后端服务、音视频处理引擎及嵌入式系统。理解其核心原理,如RAII资源管理、零拷贝技术和多线程并发模型,是掌握现代基础设施开发的关键。这些技术广泛应用于需要极致性能与资源效率的场景,例如高并发网络服务器、实时音视频流处理以及物联网设备驱动。本合集聚焦于为开发者,特别是面临求职的应届生,提供一套覆盖后端服务、音视频、游戏、嵌入式、高性能网络、存储、基础架构及AI基础设施等多个硬核领域的实战项目。通过精选的C++实战项目, 阅读详情

1、执行如下指令可以统计Android源码目录下的 所有的mk文件的总数及其内容(这是分析源码的很好的工具)

for i in `find . -maxdepth 1 -type d`
do
 echo $i
 mkdir -p ~/Desktop/android_mk/$i
 find $i -type f -name "*.mk" -print | echo -e ""$i" Total is:`wc -l`" >> ~/Desktop/android_mk/total_mk_list_about.txt
 find $i -type f -name "*.mk" -print | echo -e "/n"$i"'s Android.mk Total number is:`wc -l`/n" > ~/Desktop/android_mk/$i/"$i"_mk_list.txt
 find $i -type f -name "*.mk" -print >> ~/Desktop/android_mk/$i/"$i"_mk_list.txt
 find $i -type f -name "*.mk" -printf "/n# ============================================================/n# " -print -printf "# ============================================================/n/n" -exec cat {} /; >> ~/Desktop/android_mk/$i/"$i"_mk_content.txt
done

mv ~/Desktop/android_mk/._mk_content.txt ~/Desktop/android_mk/total_mk_content.txt
mv ~/Desktop/android_mk/._mk_list.txt ~/Desktop/android_mk/total_mk_list.txt

 

同理,如果我们要分析linux源码,可以执行:

for i in `find . -maxdepth 1 -type d`
do
 echo $i
 mkdir -p ~/Desktop/linux_Makefile/$i
 find $i -type f -name "Makefile" -print | echo -e ""$i" Total is:`wc -l`" >> ~/Desktop/linux_Makefile/total_Makefile_list_about.txt
 find $i -type f -name "Makefile" -print | echo -e "/n"$i"'s Makefile Total number is:`wc -l`/n" > ~/Desktop/linux_Makefile/$i/"$i"_Makefile_list.txt
 find $i -type f -name "Makefile" -print >> ~/Desktop/linux_Makefile/$i/"$i"_Makefile_list.txt
 find $i -type f -name "Makefile" -printf "/n# ============================================================/n# " -print -printf "# ============================================================/n/n" -exec cat {} /; >> ~/Desktop/linux_Makefile/$i/"$i"_Makefile_content.txt
done

mv ~/Desktop/linux_Makefile/._Makefile_content.txt ~/Desktop/linux_Makefile/total_Makefile_content.txt
mv ~/Desktop/linux_Makefile/._Makefile_list.txt ~/Desktop/linux_Makefile/total_Makefile_list.txt

 

以2.6.30源码为例,结果为:

linux2.6.30 Total is:1143
|-net Total is:60
|-usr Total is:1
|- block Total is:1
|- firmware Total is:1
|- kernel Total is:5
|- include Total is:0
|- Documentation Total is:16
|- ipc Total is:1
|- mm Total is:1
|- drivers Total is:394
|- lib Total is:5
|- security Total is:7
|- init Total is:1
|- sound Total is:81
|- arch Total is:480
|- scripts Total is:9
|- samples Total is:5
|- virt Total is:0
|- fs Total is:72
|- crypto Total is:2

 

2、Android1.5源码包含的mk文件总数及其列表如下:

android Total is:1018
|- frameworks Total is:90
|- external Total is:535
|- system Total is:57
|- hardware Total is:16
|- packages Total is:47
|- bootable Total is:18
|- build Total is:92
|- bionic Total is:10
|- out Total is:2
|- development Total is:107
|- dalvik Total is:26
|- prebuilt Total is:18

 

android's Android.mk Total number is:1018

./frameworks/policies/base/phone/Android.mk
./frameworks/policies/base/mid/Android.mk
./frameworks/policies/base/PolicyConfig.mk
./frameworks/base/media/tests/MediaFrameworkTest/Android.mk
./frameworks/base/media/libmediaplayerservice/Android.mk
./frameworks/base/media/libdrm/Android.mk
./frameworks/base/media/libdrm/mobile2/Android.mk
./frameworks/base/media/libdrm/mobile1/Android.mk
./frameworks/base/media/mediaserver/Android.mk
./frameworks/base/media/jni/Android.mk
./frameworks/base/media/jni/soundpool/Android.mk
./frameworks/base/media/libmedia/Android.mk
./frameworks/base/media/sdutils/Android.mk
./frameworks/base/opengl/libagl/Android.mk
./frameworks/base/opengl/tests/angeles/Android.mk
./frameworks/base/opengl/tests/Android.mk
./frameworks/base/opengl/tests/finish/Android.mk
./frameworks/base/opengl/tests/filter/Android.mk
./frameworks/base/opengl/tests/tritex/Android.mk
./frameworks/base/opengl/tests/textures/Android.mk

.....................................................................................................

 

3、如framewoks目录下,统计出的mk总数及其文件内容格式如下:

./frameworks's Android.mk Total number is:90

./frameworks/policies/base/phone/Android.mk
./frameworks/policies/base/mid/Android.mk
./frameworks/policies/base/PolicyConfig.mk
./frameworks/base/media/tests/MediaFrameworkTest/Android.mk
./frameworks/base/media/libmediaplayerservice/Android.mk
./frameworks/base/media/libdrm/Android.mk
./frameworks/base/media/libdrm/mobile2/Android.mk
./frameworks/base/media/libdrm/mobile1/Android.mk
./frameworks/base/media/mediaserver/Android.mk
./frameworks/base/media/jni/Android.mk
./frameworks/base/media/jni/soundpool/Android.mk
./frameworks/base/media/libmedia/Android.mk
./frameworks/base/media/sdutils/Android.mk
./frameworks/base/opengl/libagl/Android.mk
./frameworks/base/opengl/tests/angeles/Android.mk

........................................................................


# ============================================================
# ./frameworks/policies/base/phone/Android.mk
# ============================================================

LOCAL_PATH:= $(call my-dir)

# the library
# ============================================================
include $(CLEAR_VARS)

LOCAL_SRC_FILES := /
            $(call all-subdir-java-files)

LOCAL_MODULE := android.policy_phone
LOCAL_UNINSTALLABLE_MODULE := true

include $(BUILD_JAVA_LIBRARY)

# ============================================================
# ./frameworks/policies/base/mid/Android.mk
# ============================================================

LOCAL_PATH:= $(call my-dir)

# the library
# ============================================================
include $(CLEAR_VARS)

LOCAL_SRC_FILES := /
            $(call all-subdir-java-files)

LOCAL_MODULE := android.policy_mid
LOCAL_UNINSTALLABLE_MODULE := true

include $(BUILD_JAVA_LIBRARY)
..............................................................

嵌入式开发路径选择:裸机与Linux对比分析及学习路线 嵌入式系统开发是连接硬件与软件的关键技术领域,其核心在于实现对特定设备的智能化控制。从技术原理上看,嵌入式开发主要分为直接操作硬件的裸机开发和基于操作系统的开发两种模式。裸机开发更贴近硬件底层,能提供极致的实时性和资源控制,而基于Linux等操作系统的开发则能利用丰富的软件生态和高级抽象,适用于复杂功能场景。在工程实践中,选择合适的技术路径直接影响产品的成本、功耗和开发效率。对于物联网终端、工业控制等场景,裸机开发在实时性和低功耗方面具有不可替代的价值;而对于智能网关、多媒体设备等需要复杂网络连接和图形界面 阅读详情

相关推荐

AI直接生成二进制:编译器消亡与嵌入式开发范式转移

二进制是软件在硬件上执行的终极形式,而传统编译器作为多层抽象转换工具,正面临被大模型端到端建模能力重构的临界点。其核心原理在于将指令集语义、内存布局约束、硬件实时状态等跨层级知识统一编码为神经网络的前向推理过程,从而跳过AST、IR、汇编等中间表示带来的语义损耗。这种技术路径不仅提升全栈协同效率,更赋予固件以物理世界感知能力——如根据温度、电压、Flash寿命动态优化指令序列。当前落地聚焦于嵌入式场景,典型应用包括STM32/ESP32等MCU的无C代码固件生成、链接脚本自动求解、硬件耦合型指令替换等。它不

weixin_33892359的博客 404

使用Makefile笔记总结

GNU的make很强大,它具有一些隐晦规则,可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个.o文件后都写上类似的命令,因为,我们的make会自动识别,并自己推导命令。 只要make看到一个.o文件,它就会自动的把.c和.h文件加在依赖关系中,如make找到一个print.o,那么print.c和print.h,就会是print.o的依赖文件,并且 cc -c print.c 也会被推导出来。

yelvens的博客 1753

基于Qt与C++的跨平台系统资源监控工具开发实战

系统监控是软件开发与运维中的基础需求,它涉及对计算机核心资源(如CPU、内存、磁盘、网络)运行状态的实时感知与数据可视化。其原理通常是通过调用操作系统提供的原生API或读取系统文件(如Linux的/proc、Windows的性能计数器)来周期性采集性能数据。掌握系统监控技术对于开发高性能、高可用的软件系统具有重要价值,它能帮助开发者进行性能瓶颈分析、资源优化和故障预警。在应用场景上,从服务器运维到桌面应用开发,再到嵌入式设备管理,都离不开轻量级、定制化的监控方案。本文聚焦于使用Qt框架和C++语言,构建一个

weixin_30493401的博客 426

跟我一起写 Makefile(九) (转)

跟我一起写 Makefile(九) (转)[@more@]使用函数———— 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函...

csd3176的博客 185

脑控系统无线化落地:WiFi 6与无线调试的工程实践

从脑机接口到可穿戴智能设备,低时延无线数据传输正成为神经交互落地的核心挑战。脑电信号采样率高、数据量大,BLE(低功耗蓝牙)与WiFi 6各有适用场景:前者适合少量通道的低功耗设备,后者凭借OFDMA和确定性时延优势成为多通道脑控系统的首选。实际工程中,无线链路的不稳定往往源自驱动、电源管理乃至协议栈选型等底层细节——Linux下网卡驱动编译、ASPM关闭、无线ADB调试,每一环都可能影响数据流的抖动分布。理解无线传输的QoS分层设计和调优策略,是脑控产品从实验室走向康复训练、智能家居等真实场景的关键能力。

weixin_30376509的博客 310

Gemini 3.1 Pro工程实践指南:200万token与原生多模态落地要点

大语言模型的长上下文与原生多模态能力,正从技术概念走向真实开发刚需。200万token不再只是参数指标,而是支撑跨文档逻辑推理、内核级代码分析等复杂任务的底层基础;原生多模态则突破传统OCR+LLM流水线的精度瓶颈,实现图像中UI、文本与语义的端到端联合理解。这类能力直接提升AI在工业质检、芯片验证、智能客服等场景的工程可用性与成本效益。本文聚焦Gemini 3.1 Pro在KULAAI平台的稳定接入、上下文模式切换、多模态输入规范及token成本优化策略,覆盖从本地测试到生产部署的关键链路,尤其针对国内开

weixin_33853794的博客 376

Makefile 常用函数总结

1. foreach: 循环 $(foreach <var>,<list>,<text>) 功能:把参数<list>;中的单词逐一取出放到参数<var>;所指定的变量中,然后再执行< text>;所包含的表达式。每一次<text>;会返回一个字符串,循环过程中,<text>;的所返回的每个字符串会以空格分隔,最后当整个循环结束时,<text>;所返回的每个字符串所组成的整个字符串(以空格分隔)

老农民娃哈哈的博客 1462

ONNX跨框架部署:从PyTorch/TensorFlow到WebAssembly的工程实践

ONNX(Open Neural Network Exchange)是一种面向生产环境的开放神经网络交换格式,其本质是将深度学习模型抽象为标准化的有向无环图(DAG),实现训练框架与推理引擎的解耦。它通过Protocol Buffers序列化、Opset版本控制和静态计算图定义,保障模型在不同硬件平台(CPU/GPU/WebAssembly)上的可移植性与执行一致性。ONNX Runtime作为核心执行引擎,支持插件化Execution Provider,使同一模型可无缝适配NVIDIA CUDA、Inte

weixin_33739646的博客 368

列出Linux源码下所有Makefile的方法

 一、要求:1、能够显示出Makefile的总数2、能显示一级目录下的Makefile总数、Makefile列表及其Makefile的内容3、能将上述内容写入相应的文件 二、实例 rm -rf ~/Desktop/linux_Makefile/*for i in `find . -maxdepth 1 -type d` #仅仅是当前目录,所以请将本

走南闯北的专栏 1314

高性能ARM Cortex-A57核上运行FreeRTOS:从环境搭建到多核调度的工程实践

实时操作系统(RTOS)是嵌入式系统实现确定性响应的核心软件基础,其基于优先级的抢占式调度和极短的中断响应路径,为工业控制、自动驾驶等场景提供了硬实时保证。FreeRTOS作为一款开源、可裁剪的微内核RTOS,凭借其高可移植性和丰富的组件生态,成为资源受限MCU和高端应用处理器上的热门选择。当系统同时需要强大的计算性能与严格的实时性时,例如在ARM Cortex-A57这类高性能应用处理器上运行复杂的矩阵运算或图像处理算法,将FreeRTOS移植到A57平台便成为关键的技术方案。这涉及到针对ARMv8-A

weixin_34310369的博客 362

C++与QT桌面应用开发入门:从环境搭建到实战图片查看器

桌面应用开发是连接用户与系统功能的重要桥梁,其核心在于构建直观、响应迅速的图形用户界面(GUI)。在众多技术方案中,C++以其卓越的性能和底层控制能力成为高性能桌面应用的首选,而QT框架则通过其强大的信号与槽机制、跨平台特性和丰富的控件库,极大地简化了C++ GUI开发的复杂度。信号与槽作为QT的核心通信机制,实现了对象间松耦合、类型安全的交互,其背后的元对象系统(Meta-Object System)和moc编译器,是QT实现这一“魔法”的关键。这套组合的技术价值在于,它让开发者能在享受C++高性能的同时

weixin_30647065的博客 393

古法编程:程序员必备的底层原理与系统思维修炼指南

在软件开发领域,理解计算机系统原理是构建高性能、高可靠性应用的基础。从内存管理、CPU缓存到操作系统进程调度,这些底层机制决定了程序的执行效率与资源利用。掌握这些核心原理,不仅能提升深度调试与性能优化的能力,更能帮助开发者正确理解并高效运用现代抽象技术,如容器化与并发框架。在数据库查询优化、内存泄漏排查等常见工程实践中,系统思维能引导开发者从现象直抵本质。本文聚焦于古法编程的价值,探讨如何通过C语言实践、操作系统核心概念学习及工具链掌握,系统性地构建可迁移的解决问题能力,从而在快速迭代的技术浪潮中保持核心竞

weixin_33908217的博客 349

Makefile显示编译详情

在编译grpc的时候,发现编译不是静态编译,那么就会导致复制出去的时候程序会提示依赖glic版本依赖问题,而解决办法则是想办法找到编译时候的参数加上-static,但是makefile一大堆,想了两个方法,尝试了方法1即成功了,2后期再找找也就是要熟悉linux上进程的诊断。1.显示makefile编译过程详情,然后找到最后编译命令。使用了make VERBOSE=1来找,下列就是找的过程。2.使用tracee等工具,来找到编译命令,然后自己编。使用方法1来找,参考了下面链接。

SHELLCODE_8BIT的博客 2475

【推荐一款比腾讯WorkBuddy、阿里悟空更好用能力更强的办公自进化 Agent 】开源 DeepThink AI Agent

DeepThink, 企业级自主 Agent 超级智能体自进化平台,从 Harness Engineering 到 Loop Engineering 范式的先行者,是面向企业客户的新一代 AI 基础设施(AI Infra)。DeepThink 平台以多 Agent 协作框架为核心,融合 AI 自主编程(AI Coding)、自主进化(Self-Evolving)、全栈可观测性(Full-Stack Observability)、Bug 自修复闭环(Bug Auto-Fix Loop)Coding Agent

AI天才研究院 1139

【深度长文】OpenH264 编解码器全解析:从入门到精通

【深度长文】OpenH264 编解码器全解析:从入门到精通

世界那么大,我想去看看~【随心更新,看世界去了😄】 893

华为IC岗笔试刷题含答案(2)

又做了几套题,记录了部分及答案,如有错误,欢迎评论指正。

Ingrid的博客 1万+

长沙红胖子Qt·西安(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...

长沙红胖子 Qt・西安,本人拥有省级科研团队从业背景,研发团队产出所有项目、产品方案和研发无分包、无外包、无AI代笔,长期深耕双一流体系高精尖技术配套研发。博客主动剥离复杂底层工况机理,专注沉淀高端、特种行业领域Qt工程化落地实战经验。所有内容均为个人梳理总结的通用性工程方法论,只输出可公开的普适技术思路。

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 164万+

用AI从0开始量化交易-制定学习计划安装学习环境

量化小白,利用AI从零开始学量化

weixin_52285994的博客 2112

开源入门实战:Python/C++/Java三栈贡献路径与避坑指南

开源贡献不是语法考试,而是工程能力的综合验证。理解项目协作规范、构建可复现的开发环境、撰写可验证的PR描述,是跨越‘围观者’到‘可信贡献者’的核心能力。Python强调可读性即文档,适合从docstring和示例入手;C++聚焦构建确定性与内存模型,破局点常在CMake脚本与头文件管理;Java则深植于企业级复杂度,高杠杆贡献往往来自JVM调优、配置诊断与自动化工具。结合‘vscode配置c/c++环境’‘java环境变量配置’等高频搜索场景,本文直击真实构建失败(如error: #5)、运行时异常(如Ou

weixin_33827590的博客 890

Trae+雪球MCP,化身专业的股票分析师(玩转100个MCP系列第二弹)

大家好呀,我是程序员夏叶,深度AI编程使用者,专注于分享AI编程方面的使用技巧、经验以及前沿资讯,有兴趣的可以关注我的公众号,一起学习,共同进步。第二弹,使用Trae+雪球MCP,获取股票实时行情,分析股票走向等,写代码间隙看看股票价格,研究研究行情,哈哈。真的很不错呀,最关键的是,足够隐蔽,同事以为你在写代码,实际你在浏览股票行情,哈哈,感兴趣的可以试一下哦。说实话,沧州明珠这只股我算是砸手里了,不过还好买的不多,哈哈。

cpp加油站的专栏 517

【测绘程序设计】——潮汐调和分析

最小二乘潮汐调和分析源码、使用示例及数据

C_xxy's blog 2652

Gemma 4开源模型:面向边缘设备的带宽感知架构解析

大语言模型部署正从云端向终端迁移,而内存带宽瓶颈、量化精度塌方与首token延迟成为制约边缘AI落地的核心障碍。带宽感知注意力(BAA)等新型架构设计,通过重构数据搬运逻辑、优化片上缓存利用与稀疏计算调度,显著提升FLOPs实际利用率。这类技术不仅降低对高带宽内存和高端GPU的依赖,更使INT3/INT4量化在树莓派、Jetson、M系列Mac等资源受限设备上实现稳定低延迟推理。Gemma 4系列正是这一范式的工程化标杆——它不堆参数,而重契约;不刷榜单,而守时延。本文深入解析其硬件亲和架构、三档模型场景切

weixin_30698527的博客 496

《大数据: Hive 交互命令和常用配置》

一、Hive 交互命令 1. 首先解决一个可能发生的问题 (log4 jar包冲突) 我这里解决方法就是删除一个,我删的是hive下的包 yexiang@hadoop1:<hive>$ hive SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/soft/apache-hive-2.3.7-bin/lib/log4j-slf4j-impl-2.6.2.ja.

yexiang优快云的专栏 287
上一篇: Android系统移植准备
下一篇: Android Makefile的分类
sanlinux
博客等级 码龄17年 92粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值