apple下的跨平台是指不同设备上的苹果系统以及同一系统在不同cpu体系的不同版本。

前面一篇介绍如何用ndk编译android跨平台的第三库,那样的方法却不能应用在apple上。

网上可以找到这么一个脚本,其主要过程和功能如下图:

脚本主要依靠了xcrun -sdk命令来搜索出平台关联的编译程序和SDK目录位置。不像ndk的目录结构,苹果的目录结构不清晰有些又不统一,xcrun就是这个咨客,问它就是了。

只要将脚本中相应的容器修改就可以应用到其它第三库的编译中去。

接下来就编译过程中的怪问题。

我编译libevent库目的是用在移动设备上,然而怪事就发生了。在darwin版本中可以使用kqueue,但移动系统版本就不能使用kqueue只能用poll。原因是configugre中有两项对kqueue的检测居然会有一项不能通过,其元凶却是无关的头文件stdlib.h。因为在configure中有对--host为darwin的处理,在检测项目之前stdlib.h己经被包含,所以在检测项目的代码段中没有对stdlib.h的包含。问题就是configure没有对--host为苹果其它系统定制相关的处理,好了进入检测项目时,函数引用不允许隐式声明,也就是没有头文件的声明,导致了检测项目的失败。只要在configure中相应的地方加上对stdlib.h的包含,搞定,全部版本的libevent都可以使用kqueue。

MAC OS下编译apple跨平台的libevent库 (可延申到其它第三库)的更多相关文章

  1. 记录Mac OS下编译Thrift库

    方法一:brew管理工具安装Homebrew是Mac开发包管理工具,类似于Linux的apt-get之类的,实它相当于开发软件界的 Appstore.借助该管理工具,可以自动化地安装软件包,它会自动安 ...

  2. 在mac os下编译android -相关文章

    1. Mac OS X下编译Android源码 http://blog.csdn.net/bulreed/article/details/22783467 2.MAC OS 编译 Android源代码 ...

  3. MAC OS下使用Xcode进行GLSL编程的配置过程

    整理自之前使用的163博客原创文章. GLSL项目中需要使用GLEW库,因此先要安装GLEW库和在Xcode中配置GLEW.要使GLEW在Xcode中被正确链接,又需要通过MacPorts来安装GLE ...

  4. 在 Mac OS 上编译 FFmpeg

    本文转自:在 Mac OS 上编译 FFmpeg | www.samirchen.com 安装 Xcode 和 Command Line Tools 从 App Store 上安装 Xcode,并确保 ...

  5. Mac OS下编写对拍程序

    介绍 对拍是信息学竞赛中重要的技巧,它通过一个效率低下但正确率可以保证的程序,利用庞大的随机生成数据来验证我们的高级算法程序.对拍最大的优势在于可以通过人力所不能及的速度和数量达到验证的效果.下面我们 ...

  6. Mac OS下 Redis2.6.14部署记录

    Mac OS下 Redis2.6.14部署记录 部署一个Redis作为缓存进行验证,记录部署过程. 官网:http://redis.io/,目前最近稳定版为2.6.14  解压,进入目录.按照READ ...

  7. mac os 下搭建android开发环境

    mac os 下搭建android开发环境 周银辉 mac os 下搭建android环境比较方便, 如下几个步骤: 1,安装jdk 先搞清楚自己是否已经安装,在命令行下:java -version, ...

  8. mac os 下的sublime --- 快捷键

    mac os 下的sublime ---列模式 http://www.oschina.net/question/249672_161413 触控板也可以的:左手同时按住 Option 和触控板左下角 ...

  9. MAC OS下免费下载YouTube

    YouTube上有很多不错的视频,你感兴趣的视频除了可以加入自己播放列表之外,还可以将其下载到本地收藏起来.推荐这款软件“Xilisoft Download YouTube Video for Mac ...

随机推荐

  1. libevent::日志

    LibEvent 能记录内部的错误和警告日志,如果编译进日志支持功能,也会记录调试信息.默认情况下这些消息都是输出 到 stderr,你也可以通过提供自己的日志函数的方法来覆盖这种行为. 为了覆盖 L ...

  2. vue 父组件动态传值至子组件

    1.进行数据监听,数据每次变化就初始化一次子组件,进行调取达到传递动态数据的目的普通的监听: watch:{ data: function(newValue,oldValue){ doSomeThin ...

  3. lcx 内网转发

    把放置到已经控制的内网主机 执行 内网主机输入命令lcx.exe -slave 外网ip 外网端口 内网ip 内网端口lcx.exe -slave 30.1.85.55 2222 127.0.0.1 ...

  4. 【java基础】- java双亲委派机制

    在了解双亲委派机制之前,你应当知道classloader(如果不了解,可以现在去恶补一下哈) 四种classloader 虚拟机自带 引导类加载器(Bootstrap ClassLoader) 扩展类 ...

  5. The usage of Markdown---表格

    更新时间:2019.09.14   谈到怎么在Markdown中插入表格,其实只要熟知以下几点就可以了: 使用管道符|进行内容的分割 使用冒号:和连号符-表示表格内容的对齐情况,连号符-在中间,冒号: ...

  6. $nextTick 页面局部刷新 延迟加载

    Vue中的nextTick涉及到Vue中DOM的异步更新,感觉很有意思,特意了解了一下.其中关于nextTick的源码涉及到不少知识,很多不太理解,暂且根据自己的一些感悟介绍下nextTick 本人写 ...

  7. 详解k8s中的liveness和readiness的原理和区别

    liveness与readiness的探针工作方式源码解析 liveness和readiness作为k8s的探针,可以对应用进行健康探测. 二者支持的探测方式相同.主要的探测方式支持http探测,执行 ...

  8. 基本的sql 语句

    1,登陆数据库:mysql -u root -p2,退出数据库:exit quit ctr+d3,创建数据库:create database 数据库名 charset=utf84,使用数据库:use ...

  9. Java 计算n对应的二进制位上有几个1,分别在什么位置

    Java计算n的二进制位上有几个1,分别在什么位置   public List<Integer> getBinOneCount(int n){     List<Integer> ...

  10. Spring Cloud gateway 五 Sentinel整合

    微服务当前这么火爆的程度,如果不能学会一种微服务框架技术.怎么能升职加薪,增加简历的筹码?spring cloud 和 Dubbo 需要单独学习.说没有时间?没有精力?要学俩个框架?而Spring C ...