ios/android交叉编译参数设置

保姆级教程:在OpenWrt上交叉编译Go程序,搞定手机扫描打印服务器最后一步 本文详细介绍了在OpenWrt环境下交叉编译Go程序并部署扫描服务的完整流程。从环境准备、交叉编译技巧到SANE后端集成,再到移动端适配和服务部署,提供了全面的保姆级教程,帮助用户轻松实现手机扫描打印服务器的搭建。 阅读详情
  很多开源库的build方式都是configure->make模式,要做交叉编译关键就在于给configuare传递正确的参数,包括指定c/c++编译器、预处理器及编译标志,这些参数会影响到动态生成的头文件,以便产生正确的目标架构基础数据类型定义等。在做手机平台程序时,移植用到的第三方库是个很必须且繁琐的工作,现在把用于ios和android的配置命令总结一下以备忘。
  
  iOS:装了xcode4之后会发现命令行上的gcc居然没有,其实它被封装在xcrun gcc命令里了,所以配置参数为:
./configure --host=arm-apple-darwin --enable-static=yes --enable-shared=no CC='xcrun -sdk iphoneos gcc -std=c99' CFLAGS='-arch armv6 -O2 -miphoneos-version-min=4.0 -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/include/libxml2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk' CXX="xcrun -sdk iphoneos g++" CXXFLAGS='-arch armv6 -O2 -miphoneos-version-min=4.0 -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/include/libxml2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk' CPP='xcrun -sdk iphoneos cpp' AR='xcrun -sdk iphoneos ar' LDFLAGS='-arch armv6 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -miphoneos-version-min=4.0'

  android:安卓上stl不是做为个系统内置标准库,而像是个第三方库一样提供,如果是编译c++程序,要记得单独为它指定位置。另外,我编android程序的时候,习惯是重写CC、CXX这些环境变量并导出,然后简单的调configuare,免得带一堆长长的参数:
#!/usr/bin/bash
export SYSROOT="H:/andk/platforms/android-9/arch-arm"
export CC="$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-gcc.exe --sysroot=$SYSROOT"
export CXX="$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-g++.exe --sysroot=$SYSROOT -Ih:/andk/sources/cxx-stl/gnu-libstdc++/include"
export AR="$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-ar.exe --sysroot=$SYSROOT"
  每次要交叉编译时,先source一下上面这个脚本,之后就直接./configure –host=arm-eabi了。

  另外提一下,为什么iOS的CFLAGS要指定-arch=armv6而android不用?因为android的用于各个架构的编译器是分离的,放在各自的目录中,如toolchains/arm-linux-androideabi-4.4.3就是专用于arm的,其它x86、mips等都有对应的一套。而iOS的xcrun gcc实际上支持真机arm和模拟器x86两种,所以它需要额外指定目标架构。

  ========================================
  另外,luajit的编译比较特殊,它没有configuare,全是在makefile里搞定配置。
  所以编iOS时的命令为:
ISDK=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
ISDKVER=iPhoneOS5.1.sdk
ISDKP=$ISDK/usr/bin/
ISDKF="-arch armv6 -isysroot $ISDK/SDKs/$ISDKVER"
make HOST_CC="gcc -m32 -arch i386" CROSS=$ISDKP TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS TARGET=arm

  编android时:
make CROSS=/cygdrive/h/andk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi- TARGET_FLAGS=--sysroot=H:/andk/platforms/android-9/arch-arm TARGET_SYS=Linux TARGET=ARM
xmake从入门到精通9:交叉编译详解 xmake是一个基于Lua的轻量级现代化c/c 的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。 除了win, linux, macOS平台,以及android, ios等移动端平台的内建构建支持,xmake也支持对各种其他工具链的交叉编译支持,本文我们将会详细介绍下如何使用xmake进行交叉编译。 项目源码 官方文档 交叉编译工具链简介... 阅读详情

相关推荐

安卓手机本地运行Gemma 4多模态模型:离线、原生、零流量

多模态大模型是指能同时理解图像与文本并协同推理的AI系统,其核心在于视觉编码器与语言模型的深度耦合与跨模态注意力机制。技术价值在于摆脱云端依赖,实现隐私可控、低延迟、低功耗的终端智能。典型应用场景包括移动端现场文档解析、医疗草图辅助分析、教育可视化建模等对数据敏感且网络受限的边缘任务。当前主流方案受限于Android内存管理、算子兼容性与量化精度损失,而Gemma 4 E2B/E4B量化模型结合llama.cpp原生适配,首次在6GB RAM中端安卓机(如红米Note 10)上达成稳定多模态离线推理,支持图

weixin_33885676的博客 495

交叉编译并移植Android工具adb与adbd过程

Android tool 移植adb与adbd的记录 近期研发一个新功能,需要用到Android的adbd服务。如是尝试着交叉编译adbd,由于目前的使用场景是PC端通过usb连接到开发板上,利用adb push/pull 进行文件的传输。故我只需要交叉编译adbd服务即可。 我使用的是Ubuntu18.04,交叉编译器为T2、T7。 成功移植的Android-tools源码,zlib和OpenSSL源码我都提交到码云上:https://gitee.com/jackackcheng/android-tool

大力奇迹的博客 4482

tbox源码剖析--01

tbox源码剖析之环境搭建

Every moment of My life !!! 1510

usbmuxd通过交叉编译移植到Android上(一)

android平台支持usbmuxd

VendorLinux的博客 2388

轻量级压缩库miniz:从入门到实战应用指南

本文深入解析轻量级压缩库miniz的核心特性与实战应用,重点介绍其在嵌入式系统和移动开发中的高效集成方法。miniz以无依赖、低内存占用和简单API著称,支持0-10级压缩调节,特别适合资源受限的物联网设备和移动应用开发。通过实际案例展示如何优化压缩性能,包括内存管理、流式处理和跨平台集成技巧。

weixin_29168675的博客 458

ZYNQ平台AXI DMA传输避坑指南:如何快速定位‘errors:200‘等中断故障

本文详细解析了ZYNQ平台AXI DMA传输中常见的'errors:200'等中断故障,提供了从寄存器解析到压力测试的完整解决方案。通过深入分析XILINX_DMA中断机制、错误分类及五步排查法,帮助开发者快速定位并解决DMA传输问题,提升系统稳定性与性能。

weixin_29159613的博客 439

交叉编译时,configure参数--host作用和意义

从上图可以看出configure根据--host=xxxxx 会在makefile中生成编译器CC为 xxxx-gcc,这里要说一下,configure会用一段简单的代码,去测试调用xxxx-gcc存在不存在,如果不存在,仍然会把编译器默认为CC=gcc,也就是说,如果你用了一个错误的 --host=xxxxx,configure可能不会报错,最后make时,是调用你主机的gcc编译代码,这样编译出来的程序 ,在目标系统上面是没办法运行的。因此,要指定正确的--host值 ,才能调用正确的交叉编译工具。

rockhard的专栏 7716

SMPTE ST 2110 概论(一)

SMPTE ST 2110 概论(一)前言ST 2110与ST 2022-6ST 2110-10:基本结构与时序ST 2110-20:未压缩的视频流后续 前言 这是一份我在实习期间制作的,关于SMPTE ST 2110的简单介绍。 这篇文章主要以梳理总结 SMPTE ST 2110 的概念为主,关于具体的内容,比如IP数据报的格式、RTP时间戳的具体代码内容等等,大家可以查阅 SMPTE ST 2...

Cidd0422的博客 2万+

./configure编译使用 --host、--target 和 --build 选项进行配置

--build、--host和--target选项含义

qq_40642828的博客 6804

SAP-QM-质检操作

SAP-QM-质检操作

yanzibing99的博客 8178

C# OpenCV机器视觉:红外体温检测

阿强长舒一口气,脸上露出了自信的笑容:“好了,万事俱备,只欠东风,接下来就看我的了!在这热图像里,不同的颜色代表着不同的温度区域,就好比一幅用温度绘制的抽象画,红色通常表示高温,蓝色则代表低温,通过解读这幅画,就能大致了解物体表面的温度分布情况。” 阿强兴奋得一拍大腿,“这不就像是找到了隐藏在黑暗中的线索,只要顺着这些红外线的踪迹,就能揪出体温异常的潜在风险,守护大家的健康啦。带着这份坚定的信念,阿强又投入到新的科技研发中,他相信,只要大家齐心协力,用科技点亮希望之光,就一定能迎来更加美好的明天。

xcwzj123的专栏 3150

configure/Makefile/cmake

写一个简单的Makefile。

weixin_59665492的博客 1310

Anaconda+Pycharm安装

我提前创建好一个自己项目所需的虚拟环境。步骤是:打开终端(cmd)或者 搜索 ”Anaconda Prompt“ 并打开,输入 conda create -n pytorch python=3.9 -c。

Wang_sweet的博客 3232

vcpkg交叉编译避坑指南:如何正确配置Android/iOS的triplet文件

本文深入解析了使用vcpkg为Android和iOS进行交叉编译时,如何正确配置triplet文件以避开常见陷阱。文章详细指导了针对不同移动平台架构(如arm64-v8a, arm64)设置关键参数,并实现与Android Studio及Xcode项目的无缝集成,帮助开发者构建健壮的移动端原生库工作流。

vim8coder的博客 806

解锁全志T113-i隐藏技能:用RISC-V核跑实时系统比STM32还稳?

本文深入探讨了全志T113-i SoC的异构架构潜力,重点解析如何利用其内置的玄铁C906 RISC-V核心独立运行实时系统。通过对比传统MCU与Linux方案,文章提供了从RISC-V核心启动、FreeRTOS移植到与Linux主核进行高效异构通信的完整实战指南,为工控等需要兼顾丰富应用与硬实时控制的场景提供了高集成度的单芯片解决方案。

ansible6ops的博客 494

lammps教程:非晶sio2建模方法

大家好,我是小马老师。 本文介绍非晶sio2的建模方法。 sio2的建模方法有很多,可以下载cif文件使用atomsk转为data文件,也可以直接在ms中导入sio2结构,这些方法建的sio2都是标准的sio2晶体。 如果要建立非晶状态的sio2,就是把排列规则的sio2变成无序排列的sio2。 非晶建模方法有很多,在lammps中,可以通过高温高压的方法打乱sio2的排列实现非晶建模。 代码中的温度和步数可根据需要自己调整。 下面给出in文件案例代码。 units metal atom

lammps_jiayou的博客 5268

【FFmpeg】编译不同平台的 FFmpeg 源码 ( 本地编译 与 交叉编译 | FFmpeg 指定目标平台的编译配置参数 | 配置目标 CPU 架构 | 配置目标操作系统 )

一、本地编译 与 交叉编译 1、本地编译 2、交叉编译 3、Android 交叉编译需要的工具 二、FFmpeg 指定目标平台的编译配置参数 1、FFmpeg 交叉编译配置回顾 2、配置目标 CPU 架构 --arch 3、配置目标操作系统 --target-os

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 6886

【Unity URP渲染管线下Shader的自定义物体半透明和投影半透明效果_半透明案例分享】

Unity Shader Graph URP渲染管线下的自定义半透明效果_半透明案例分享

暴走约伯的博客 3294

android r 编译找不到头文件_xmake从入门到精通9:交叉编译详解

xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。除了win, linux, macOS平台,以及android, ios等移动端平台的内建构建支持,xmake也支持对各种其他工具链的交叉编译支持,本文我们将会详细介绍下如何使用xmake进行交叉编译。项目源码官方文档交叉编译工具链简介通常,如果我们需...

weixin_39607474的博客 331

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

跨平台开发的那些事

跨平台架构 oc中,直接引用c、c++代码的需要命名为mm格式 自己开发的framework是静态库;Android的.so是共享库 os x中,.a表示静态库,.dylib表示动态库 linux中,.a表示静态库,.so表示动态库 windows中,.lib表示静态库,.dll表示动态库 绿色表示库,黄色表示接口层,红色表示调用层 CMake CMake是一个开源的跨平台自动化构建系...

xingfeng_coder的博客 1653

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

避坑指南:Flutter+Rust混合开发中,那些让.so和.a文件编译失败的Openssl、Curl依赖问题怎么解?

本文深入探讨了Flutter+Rust混合开发中OpenSSL依赖问题的解决方案,针对Android和iOS平台提供了详细的排雷指南。从预编译库部署到Cargo.toml配置,再到build.rs的战术调整,帮助开发者有效解决.so和.a文件编译失败问题,提升开发效率。

weixin_29007243的博客 353

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Social Auto Upload:一条视频自动上传 5 个平台,定时发布完整攻略

视频剪好后,要在抖音、B 站、小红书、视频号、TikTok 之间来回切换五遍,重复上传同一个文件、重新填写标题——忙完已经是深夜。社交媒体自动上传工具 Social Auto Upload 就是为这类工作准备的:多平台自动上传、定时发布,一条命令让浏览器替你完成"上传五遍"。 [![Social Auto Upload 多平台自动上传:抖音创作者中心发布页演示](https://raw.gitc

gitblog_00032的博客 469

FFmpeg 中编译和使用 soxr 重采样引擎

对重采样质量有较高要求的音频处理流程,例如专业音频制作、科学信号处理、需要与其他高质量重采样库对齐结果的场景等。残留数据,导致 soxr 在终结状态下收到输入而崩溃。:soxr 的 CMakeLists.txt 最低版本要求为 3.1,不支持。下载 soxr 0.1.3 源码,使用 CMake 编译静态库。在最后 flush 阶段,FFmpeg 的 soxr 集成层(:如果 soxr 和 FFmpeg 都编译为静态库,需要将。的集成缺陷,后续计划尝试从 FFmpeg 源码层面修复。

T_T233333333的博客 564

移动端大语言模型部署实战:从Phi-3模型到手机AI助手

大语言模型(LLM)的部署正从云端向边缘设备延伸,其核心在于模型压缩与推理优化技术。通过量化、格式转换(如GGUF、ONNX)和专用推理引擎,模型得以在资源受限的移动设备上高效运行。这一技术路径的价值在于实现低延迟、高隐私的离线AI能力,为移动应用带来原生智能体验。其应用场景广泛,涵盖个人AI助手、实时翻译、代码辅助及嵌入式AIoT设备。本文以微软Phi-3模型为例,深入探讨了在Android/iOS设备上部署轻量级LLM的完整方案,涵盖Ollama集成与ONNX Runtime原生开发两条技术路线,并针对

anvt77205的博客 574

ZXing-C++跨平台条码库实战:从编译集成到性能优化全解析

条码(Barcode)技术作为数据自动识别与采集的基础手段,其核心原理在于将信息编码为特定规则排列的图形符号,并通过光电扫描设备进行快速读取。在软件开发领域,实现条码的生成与识别功能是移动应用、桌面软件及嵌入式系统中的常见需求。然而,跨平台开发面临的主要挑战在于如何统一处理不同操作系统和硬件架构下的依赖管理与编译工具链差异。ZXing-C++库通过提供一套高效、可移植的C++解决方案,有效应对了这一挑战,其技术价值在于实现了“一次编写,到处编译”的跨平台开发范式。该库不仅支持QR Code、Data Mat

456
上一篇: bash编译
下一篇: 为你详解Linux安装GCC方法
zm_21
博客等级 码龄14年 147粉丝 73原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值