在mac上为ios编译mono

1.下载源码到mac

2.打开终端,解压源码 tar xvf mono-VERSION.tar.gz

3.进入源码目录 cd mono-VERSION

4.配置

在mono源码目录中创建文本文件xcrun,将以下命令拷贝进去,在终端中执行./xcrun,完成之后,可以在mono_target目录中看到已经安装完成的三个目录,armv7,armv7s,sim

注意1:如果源码不是从git克隆出来,而是从官方下载的tar源码包,编译过程出现找不到route.h的情况,则可能源码中缺少这个文件,可以从git库中拷贝此文件。

注意2:如果编译过程出现cannot run test program while cross compiling 错误,可以根据提示,打开configure文件,修改对应的条件选项使跳过错误检查。参考:http://blog.csdn.net/qihuanfengyun/article/details/5385043


#!/bin/bash
BUILD_I386_IOS_SIM=1
BUILD_ARMV7_IPHONE=1
BUILD_ARMV7S_IPHONE=1
BUILD_TARGET=mono_target


IOS_MIN_SDK=6.1
(
PWD=`pwd`
PREFIX=${PWD}/${BUILD_TARGET}
rm -rf ${PREFIX}
mkdir -p ${PREFIX}


EXTRA_MAKE_FLAGS="-j4"


XCODEDIR=`xcode-select --print-path`


IOS_SDK=$(xcodebuild -showsdks | grep iphoneos | sort | head -n 1 | awk '{print $NF}')
SIM_SDK=$(xcodebuild -showsdks | grep iphonesimulator | sort | head -n 1 | awk '{print $NF}')


IPHONEOS_PLATFORM=${XCODEDIR}/Platforms/iPhoneOS.platform
IPHONEOS_SYSROOT=${IPHONEOS_PLATFORM}/Developer/SDKs/${IOS_SDK}.sdk


IPHONESIMULATOR_PLATFORM=${XCODEDIR}/Platforms/iPhoneSimulator.platform
IPHONESIMULATOR_SYSROOT=${IPHONESIMULATOR_PLATFORM}/Developer/SDKs/${SIM_SDK}.sdk


CC=clang
CFLAGS="-O2 -std=gnu99 -DHOST_IOS"
CXX=clang
CXXFLAGS="${CFLAGS} -stdlib=libc++"
LDFLAGS="-stdlib=libc++"
LIBS="-lc++ -lc++abi"
CPP="xcrun -sdk iphoneos cpp"
AR="xcrun -sdk iphoneos ar rcu"
CPPFLAGS="${CFLAGS}"


if [ $BUILD_ARMV7_IPHONE -eq 1 ]
then


echo "##################"
echo " armv7 for iPhone"
echo "##################"




(
make clean
    ./configure  --enable-small-config=yes --with-ikvm-native=no --with-sigaltstack=no --with-tls=pthread --without-mcs-docs --disable-mcs-build --enable-nls=no --enable-minimal=profiler,logging,full_messages,reflection_emit,reflection_emit_save --build=x86_64-apple-darwin --host=armv7-apple-darwin --prefix="${PREFIX}/armv7" CC=clang "CFLAGS=${CFLAGS} -miphoneos-version-min=${IOS_MIN_SDK} -arch armv7 -isysroot ${IPHONEOS_SYSROOT}" "CXX=${CXX}" "CXXFLAGS=${CXXFLAGS} -arch armv7 -isysroot ${IPHONEOS_SYSROOT}" LDFLAGS="-arch armv7 -miphoneos-version-min=${IOS_MIN_SDK} ${LDFLAGS}" "LIBS=${LIBS}"
make ${EXTRA_MAKE_FLAGS}
make ${EXTRA_MAKE_FLAGS} install
)


fi
if [ $BUILD_ARMV7S_IPHONE -eq 1 ]
then
echo "###################"
echo " armv7s for iPhone"
echo "###################"
 (
  make clean
    ./configure  --enable-small-config=yes --with-ikvm-native=no --with-sigaltstack=no --with-tls=pthread --without-mcs-docs --disable-mcs-build --enable-nls=no --enable-minimal=profiler,logging,full_messages,reflection_emit,reflection_emit_save --build=x86_64-apple-darwin --host=armv7s-apple-darwin --prefix="${PREFIX}/armv7s" "CC=${CC}" "CFLAGS=${CFLAGS} -miphoneos-version-min=${IOS_MIN_SDK} -arch armv7s -isysroot ${IPHONEOS_SYSROOT}" "CXX=${CXX}" "CXXFLAGS=${CXXFLAGS} -arch armv7s -isysroot ${IPHONEOS_SYSROOT}" LDFLAGS="-arch armv7s -miphoneos-version-min=${IOS_MIN_SDK} ${LDFLAGS}" "LIBS=${LIBS}"
    make ${EXTRA_MAKE_FLAGS}
make ${EXTRA_MAKE_FLAGS} install
)
fi


if [ $BUILD_I386_IOS_SIM -eq 1 ]
then
echo "###########################"
echo " i386 for iPhone Simulator"
echo "###########################"
 (
  make clean
    ./configure  --enable-small-config=yes --with-ikvm-native=no --with-sigaltstack=no --with-tls=pthread --without-mcs-docs --disable-mcs-build --enable-nls=no --enable-minimal=profiler,logging,full_messages,reflection_emit,reflection_emit_save --build=x86_64-apple-darwin --host=i386-apple-darwin --prefix="${PREFIX}/sim" "CC=${CC}" "CFLAGS=${CFLAGS} -miphoneos-version-min=${IOS_MIN_SDK} -arch i386 -isysroot ${IPHONESIMULATOR_SYSROOT}" "CXX=${CXX}" "CXXFLAGS=${CXXFLAGS} -arch i386 -isysroot ${IPHONESIMULATOR_SYSROOT}" LDFLAGS="-arch i386 -miphoneos-version-min=${IOS_MIN_SDK} ${LDFLAGS}" "LIBS=${LIBS}"
    make ${EXTRA_MAKE_FLAGS}
make ${EXTRA_MAKE_FLAGS} install
)
fi


) 2>&1
#) >build.log 2>&1


echo "done"



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YUV422是一种颜色编码格式,包含亮度(Y)和色度(U,V)信息。要将其转换为RAW_mono格式,需要将颜色信息去除,只保留亮度信息。 实现步骤如下: 1. 读取YUV422格式图像数据,按照每两个像素为一组进行处理。 2. 对于每一组像素,提取其中的亮度信息(Y值),将其赋值给新的RAW_mono格式图像数据中的一个像素。 3. 重复步骤2,直到处理完所有像素。 4. 将处理后的RAW_mono格式图像数据保存到文件中。 以下是一个简单的C++代码示例,用于将YUV422格式图像转换为RAW_mono格式图像: ```c++ #include <iostream> #include <fstream> using namespace std; int main() { // 打开YUV422格式的图像文件 ifstream infile("input.yuv", ios::binary); // 获取图像宽度和高度 int width = 640; int height = 480; // 计算RAW_mono格式图像数据大小 int raw_size = width * height; // 分配RAW_mono格式图像数据内存 unsigned char *raw_data = new unsigned char[raw_size]; // 读取YUV422格式图像数据并转换为RAW_mono格式 for (int i = 0; i < raw_size; i++) { // 读取一组YUV422格式像素数据 unsigned char y1 = infile.get(); unsigned char u = infile.get(); unsigned char y2 = infile.get(); unsigned char v = infile.get(); // 提取亮度信息并赋值给RAW_mono格式图像数据 raw_data[i] = y1; raw_data[i+1] = y2; // 跳过色度信息 i++; } // 关闭文件 infile.close(); // 保存RAW_mono格式图像数据到文件 ofstream outfile("output.raw", ios::binary); outfile.write((char *)raw_data, raw_size); outfile.close(); // 释放内存 delete[] raw_data; return 0; } ``` 注意:该示例代码只处理了一个YUV422格式像素数据中的两个像素,如果图像宽度不是偶数,则需要在每一行的末尾进行特殊处理。此外,该示例代码没有考虑图像的颜色空间和采样方式,实际应用中需要根据具体情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值