常用的Android平台编译变量

cmake使用教程(九)-关于安卓的交叉编译 该文章未介绍如何编译,可以参考我的另一篇文章shell脚本生成安卓全abi动态库与静态库用cmake交叉编译相当简单,基本可以达到一次编写,每次都能运行的目的。CMake使用toolchain来编译,链接library和创建archives,以及其他task来驱动构建。可用的toolchain实用程序由启用的语言确定。在正常版本中,CMake根据系统默认值自动确定主使用的toolchain。在交叉编译场景中,可以使用关于编译器和实用程序路径的信息来指定toolchain文件。 阅读详情

BOOTLOADER_PLATFORM: BootLoader代码中平台的选择

KERNEL_DEFCONFIG:确认内核defconfig使用的文件

TARGET_BOARD_PLATFORM:目标平台Platform

TARGET_BUILD_VARIANT:目标编译tags

LOCAL_FORCE_STATIC_EXECUTABLE:如果编译时候需要链接的动态库库存在静态库形式,那么在这个编译变量等于true的情况下,将会链接到对应的静态库而不是动态库。比如列出的libm,libz,libc,libcutils,libutils,liblog等动静态库都存在,那么在该变量被置true的时候,将会链接对应的静态库。当然对于本来就是静态库的libHWrecog.a来说,该变量值不会影响它是被静态链接的。可以想到这个参数的设置是和用gcc编译时候指定-static参数一样的效果, 推荐只是编译特殊ELF文件才用。通常这种情况只会在编译root/sbin目录下的应用才会用到,应为通常他们执行的时间比较早,文件系统的其他部分都没加载,所以动态库就会链接不上,这个时候静态链接是最好不过了。实际用的不多。


附:编译命令说明

- m:       Makes from the top of the tree.
- mm:      Builds all of the modules in the current directory, but not their dependencies.
- mmm:     Builds all of the modules in the supplied directories, but not their dependencies.
           To limit the modules being built use the syntax: mmm dir/:target1,target2.
- mma:     Builds all of the modules in the current directory, and their dependencies.
- mmma:    Builds all of the modules in the supplied directories, and their dependencies.


cmake使用教程(九)-关于安卓的交叉编译,2024年Android者未来的出路在哪里 文章会持续更新的。绝对干货!!!Android进阶学习全套手册关于实战,我想每一个做开发的都有话要说,对于小白而言,缺乏实战经验是通病,那么除了在实际工作过程当中,我们如何去更了解实战方面的内容呢?实际上,我们很有必要去看一些实战相关的电子书。 阅读详情

相关推荐

在Android平台下编译带STL的C++程序

基础阅读: Windows环境下Android NDK环境搭建 Android操作系统由linux的内核和java的UI构成。但在已往的Android系统上,一般只能用java程序进行开发。若要使用C/C++,通常是将C/C++程序做成lib再由java来调用。理论上说,android上是可以直接用C/C++开发的,因为底层的系统就是linux内核。但以前发布的android

齐北的小村 5842

从CM刷机过程和原理分析Android系统结构

前面101篇文章都是分析Android系统源码,似乎不够接地气。如果能让Android系统源码在真实设备上跑跑看效果,那该多好。这不就是传说中的刷ROM吗?刷ROM这个话题是老罗以前一直避免谈的,因为觉得没有全面了解Android系统前就谈ROM是不完整的。写完了101篇文章后,老罗觉得第102篇文章该谈谈这个话题了,并且选择CM这个有代表性的ROM来谈,目标是加深大家对Android系统的了解...

xiaoheliushuiya 1252

使用安卓NDK编译VSOMEIP3流程

安卓NDK交叉编译vsomeip3

weixin_43197755的博客 2386

Android TARGET_BOARD_PLATFORM值查看

说明 在Android.mk中经常看到TARGET_BOARD_PLATFORM,如何找到TARGET_BOARD_PLATFORM在上面地方赋值,查看它的值是多少呢? 一般的配置文件都在device下面,在device目录下grep查找可以发现: zhoujy@zhoujy-virtual-machine:~/public/SC826/sc826-source/soc-release/device$ grep -rn "TARGET_BOARD_PLATFORM" . ./qcom/msm8953

zjy764219923的专栏 3155

Android平台交叉编译流程

一: 当我们在Android平台上开发一些软件的时候,有时不可避免的要用到一些用c/c++所编写的库。有些库有大神们已经封装好了在特定平台上对应的api,我们直接调用就可以,但是更多的库需要我们自己根据自己所需的特定的平台去进行编译。 二: 不同的目标平台都有明确的编译器,所以说在一个平台上编译另一个平台上所运行的程序就叫做交叉编译。常见的ARM平台的交叉编译工具链有:  arm-lin

zhou12314的专栏 7407

Android 编译文件简述(CMakeLists.txt)

CMakeLists.txt 是 CMake (Cross Platform Make)构建系统中用于配置项目的核心文件。它采用 CMake 自定义的语法,用于指定项目的组织结构、编译选项、依赖项等信息。通过编写 CMakeLists.txt 文件,可以实现跨平台的项目构建和管理。这个文件通常包含项目的名称、版本信息、源文件列表、编译选项、链接库、生成可执行文件或库等指令。

weixin_35723192的博客 497

msm8937 64位开发概要

8937 lk采用8952的。 /device/qcom/msm8937_64/BoardConfig.mk下面可看出来 BOOTLOADER_PLATFORM := msm8952 # use msm8937LK configuration 2.8937 configs文件用kernel\msm-3.18\arch\arm64\configs目录下的 3.user版本用msm8937-per...

weixin_44563404的博客 729

RK3568平台开发系列讲解(安卓篇)Android编译过程介绍

当前目录下编译执行,相当于在android目录下执行make 本文介绍Android的编译过程及各种mk文件的导入 1.编译 a.编译步骤 清理 sh $ make clobber 初始化环境 sh $ source ./build/envetup.sh # 这个命令是用来将envsetup.sh里的所有用到的命令加载到环境变量里去 选择编译目标 sh $ l...

内核笔记 5644

ifneq (,$(filter $(strip $(TARGET_BOARD_PLATFORM)), mt6735m mt6737m))

$(filter eng user userdebugtests,$(MAKECMDGOALS))是检查$(MAKECMDGOALS)中有没有eng user userdebugtests这几个单词,有的话返回单词。 所以ifneq ($(filter eng user userdebugtests,$(MAKECMDGOALS)),)可以这样理解 当make后输入的命令有eng user u

平常心的专栏 6465

安卓平台valgrind交叉编译

本文主要讲述了在Android平台使用ndk23交叉编译工具链编译valgrind时遇到的问题及解决方法。主要问题包括不支持Android系统、结构体重复定义、无法找到libgcc.a库以及32位工具编译失败等。作者首先尝试通过修改configure参数和解决依赖问题来解决问题,但在目标机调试时仍然遇到断言错误。随后,作者尝试使用gcc编译而非clang,并找到了一个早期版本的ndk14,最终成功编译并调试了valgrind。有时换一个思路,也许会让你柳暗花明又一村,拥有意外收获。

点滴路程 2900

Cadence Allegro 17.4 保姆级教程:PCB位号重排与反标回原理图完整避坑指南

本文详细解析了Cadence Allegro 17.4中PCB位号重排与反标回原理图的全流程,包括安全工程准备、智能重排策略和反标黄金法则。特别针对芯片封装协同设计(Co-Design)场景,提供可追溯的版本管理和故障恢复方案,帮助工程师避免常见位号陷阱,确保设计文件一致性。

weixin_30613433的博客 440

【源码阅读系列】(二)Android的源码与编译

现在来详细介绍一下envsetup.sh这个脚本这个脚本记录了编译过程中所需要的各种函数实现,如m\mm\mmm\lunch 等函数,进入这个脚本可以看到里面给出的提示可以使用m help命令获取提示。添加编译目标:将以下文件搜索并source进来注意,在安卓9可能有这个文件,更新版本就没有了,这里也会解释原因。当我们进入目录下后会发现里面有很多mk文件,其中比较重要的有AndroidProducts.mk 、device.mk、vendorsetup.sh、BoardConfig.mk。

xuanyulevel6的博客 2943

态路小课堂丨三款800G光模块方案介绍—SR8/DR8/2FR4

800G QSFP-DD 2FR4光模块使用CWDM4波长(1271/1291/1311/1331nm),单通道速率为100G,通过MUX减小光纤的数目,其光学接口采用CS接口或双芯LC接口。

poposu的博客 2386

android系列:第一篇 android开发常用命令集合,代码目录简介

android开发常用命令集合,代码目录简介   一、adb相关 adb全名Andorid Debug Bridge. 顾名思义, 这是一个google为androidDebug专门开发的工具。 常用adb命令    1. 查看设备   adb devices   这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示   2. 安装软件

Radia的专栏 2878

codesys【modbusRTU】主站

【代码】modbusRTU【codesys】

cfqq1989的博客 4374

FOC实战笔记:RC吸收电路的设计考量与参数调优

本文深入探讨了FOC驱动器中RC吸收电路的设计与调优。针对MOS管开关过程中的电压尖峰问题,详细阐述了RC电路的钳位与能量吸收原理,并提供了从参数计算、实验调试到布局布线的完整实战指南,旨在帮助工程师有效提升系统可靠性与稳定性。

weixin_29219539的博客 275

Termux配置安卓编译环境

Termux安装后,就相当于把手机变成了一台Linux服务器,而且现在手机卡通常是能拿到ipv6公网地址的,所以,这个服务器能干啥?编程搭建网站跑脚本本文讲述的就是怎么在Termux搭建安卓编译环境,实现手机app自产自编,自己搞自己,脱离电脑搞app开发。

Blog for 明月依希 8176

从零搭建UVM验证环境:新手入门实践指南

在数字芯片验证领域,SystemVerilog和UVM(Universal Verification Methodology)是构建高效验证环境的核心技术。其原理基于面向对象编程和事务级建模,通过组件化架构实现验证的复用性和自动化。这一方法学的技术价值在于显著提升验证效率与质量,广泛应用于处理器、通信芯片等复杂设计的验证场景。本文聚焦于UVM验证环境的搭建实践,通过一个加法器实例,详细解析了uvm_driver、uvm_monitor、uvm_sequence等关键组件的协同工作机制,并提供了基于Quest

weixin_30015371的博客 446

CMake 安卓NDK编译常用语法

CMake 安卓NDK编译常用语法CMake 安卓NDK编译常用语法CMake版本设置项目名称平台 32&64路径相关配置设置生成动态库文件常用的编译和链接选项编译选项`CMAKE_CCXX_FLAGS_RELEASE`、`CMAKE_CCXX_FLAGS_RELEASE`链接选项`CMAKE_SHARED_LINKER_FLAGS`链接第三方库导出有符号和无符号库 CMake 安卓NDK...

q345911572的博客 1426

CVPR 2027 投稿规划:基于近3年录用率与截稿周期的5步时间管理法

本文为计算机视觉研究者提供CVPR 2027投稿的完整规划指南,基于近三年录用率与截稿周期数据,提出五步时间管理法。涵盖选题策略、实验设计、论文写作、同行评审到最终提交的全流程优化,特别针对CVPR日益激烈的竞争环境(2024年投稿量达11532篇,录取率仅23.6%)提供实用解决方案,帮助研究者提升投稿成功率。

weixin_34079177的博客 1157

AI Agent辅助企业财务分析与预测

企业财务分析与预测是企业管理中至关重要的环节,准确的财务分析与预测能够帮助企业管理者做出明智的决策,合理规划资源,降低风险。然而,传统的财务分析与预测方法往往依赖于人工经验和简单的统计模型,存在效率低、准确性差等问题。随着人工智能技术的飞速发展,AI Agent作为一种智能的软件实体,能够自主地感知环境、做出决策并采取行动,为企业财务分析与预测带来了新的解决方案。

AI天才研究院 921

Android编译浅析和常用编译指令--展讯平台

Android编译浅析和常用编译指令        我们日常工作中,每天都要编译代码,那么Android的编译原理是怎么样的呢?如何能提高编译的效率?以下我们简单的分析下。 一、Android的标准编译流程 Android标准编译分三步——1、遍历所有的编译项:source build/envsetup.sh;2、选择要编译的选项:lunch xx;3、选择全编译或者模块编译make [

tianxiaohui315的小专栏 4067

PyTorch深度学习实战(29)——变分自编码器(Variational Autoencoder, VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。

盼小辉丶的博客 1万+

Windows 和 android 平台Boost编译方法

1.Windows 平台编译 环境 Windows 10 Visual Studio 2015  boost 1.64 步骤 直接执行build_boost.bat 之后直接运行 bjam.exe,或者指定编译命令 指定msvc版本14.0对应的是vs2015,--stagedir是指定编译后存放的目录 ./bjam.exe stage --toolset

cjy461549601的专栏 3986

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

gdal android 编译好,gdal库的Android平台编译

一,准备工作由于最近在做的Gis行业的安卓客户端的需要,需要把gdal_2.3.1库编译成安卓平台Arm64_v8a版本的.so库。由于要求是对AndroidNDK版本 12以上,Android API 21以上的支持。在此次的编译过程中,参考了同样简书上的这篇文章GDAL for Android 从编译到读写shp,感谢作者提供的思路。所以在本次编译过程中全部需要使用64位的操作系统,NDK及编...

weixin_30118803的博客 1658

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 常用命令
下一篇: 常用的调试手段
makeyourprogress
博客等级 码龄11年 26粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值