`
chenqi210
  • 浏览: 78674 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

autotools 在MAC上编译问题

 
阅读更多

通常在MAC上可以和其他linux机器一样用

 

autoreconf -vi && cd bin && ../configure && make

 但是在需要编译iOS(iPhone, AppleTV, WatchOS)之类的二进制文件时需要有其他的设置

 

-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk \
-mios-simulator-version-min=10.3

 

 这个是iPhone模拟器的设置,编译出来的结果可以给模拟器使用。

在模拟器上又对二进制文件有32位和64位的不同要求。以xcode 8.3.1为例,除iphone 5 要求32位外,其他全部要求64位。

如果分开做的话需要每次将下其中一个参数加入到编译选项中

// intel 32bits?
-arch i386

// amd64?
-arch x86_64

// powerpc 32bits
-arch ppc

// powerpc 64bits
-arch ppc64

但是其实,mac上有一个叫fat或universal 的二进制格式。

 

autoconf手册里有提到过可以串在一起直接做成fat/universal格式的。如下

./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
                 CPP="gcc -E" CXXCPP="g++ -E"

 注意,在xcode 8.3.1上ppc和ppc64不被支持,需要去掉。

 

最后编译结果会是这样

.libs/libhelloworld.a: Mach-O universal binary with 2 architectures: [i386: current ar archive random library] [x86_64: current ar archive random library]
.libs/libhelloworld.a (for architecture i386):  current ar archive random library
.libs/libhelloworld.a (for architecture x86_64):        current ar archive random library

 

autoconf手册上原文说不能保证所有情况下都成产生fat/universal格式的二进制文件.

分享到:
评论

相关推荐

    seafile客户端交叉编译到windows相关文件

    本文将深入探讨如何在Fedora 28操作系统上对Seafile客户端进行交叉编译,使其能够在Windows系统(如Win7和Win10)中运行。Seafile是一款开源的云存储和文件同步服务,它的客户端支持多种操作系统,包括Linux、...

    osx平台编译vlc_iOS资源文件

    在OSX平台上编译VLC的iOS版本,需要处理一系列依赖库和源代码,确保所有必要的组件都就绪。根据提供的文件列表,我们可以看到涉及到了多个关键的开源库,这些库是构建VLC_iOS的基础。 首先,`libgcrypt-1.6.2.tar....

    Ubuntu14.04+UPX3.92编译过程及相关源码与错误处理方法

    在本文中,我们将深入探讨如何在Ubuntu 14.04操作系统上编译UPX 3.92,这是一个广泛使用的可执行文件压缩工具。在编译过程中,我们经常会遇到各种错误,但不用担心,因为本资源包包含了相关源码、编译步骤以及详细的...

    ijkplayer_ios

    编译ijkplayer_ios需要Mac操作系统,因为iOS应用的开发通常在Xcode环境中进行。开发者需要安装Xcode,这包含了iOS SDK和必要的编译工具链。同时,还需要配置好Homebrew(一个包管理器)来安装编译ijkplayer所需的...

    20191117-CMake的应用与实践.pdf

    2. 跨平台支持:CMake支持多种操作系统平台,开发者可以编写一个CMakeLists.txt文件,通过简单的修改就可以在不同的平台上进行构建,无需对每种操作系统编写单独的编译指令。 3. 编译效率高:相较于autotools,...

    开源跨平台XML解析器-LIBXML2--C源代码及VC6工程文件

    在其他平台上,例如Linux或Mac OS X,可能会有autotools的配置脚本,如configure、makefile.in等,用于自动化编译和安装过程。 使用LIBXML2的开发者可以通过API接口来访问其功能,这些接口包括解析XML文档的函数...

    最新的config.sub和config.guess(2012-02-10)

    这两个脚本主要用于识别和处理源代码树中的系统配置,确保软件能在多种操作系统和硬件架构上正确编译和运行。 `config.guess` 的主要功能是检测构建系统的具体类型。它能够识别各种操作系统、处理器架构以及不同的...

    安装Git(包括在Linux、macOS、Windows和源上安装).pdf

    本文将详细介绍如何在不同的操作系统上安装Git,包括Linux、macOS、Windows以及从源代码编译安装的方法。 #### 在Linux上安装Git 在Linux环境下,可以通过多种方式安装Git,具体取决于您的Linux发行版: - **...

    freetype-2.3.4.tar.gz

    2. **构建系统**:FreeType使用了autotools作为其构建系统,包括`configure`脚本和Makefile模板,用于在不同平台上编译和安装库。用户可以通过执行`./configure`、`make`和`make install`等命令来编译和安装库。 3....

    超详细的cmake教程(去糟粕-重实践-学以致用).pdf

    其次,CMake是一个跨平台的工具,可以在多种操作系统上运行,如Linux、Unix、苹果Mac OS X、Windows等。这是由于CMake能够生成对应平台的原生编译配置文件。例如,在Linux/Unix系统下,CMake生成makefile文件;在...

    wxGTK-2.4.0.tar.gz

    6. **配置脚本和Makefile**:用于构建和安装wxGTK库的脚本,通常使用autotools或CMake进行编译和安装。 **使用wxGTK-2.4.0开发** 在Linux环境下,开发者首先需要解压并编译这个包,然后将编译好的库安装到系统路径...

    Cross-Platform Development in C++

    C++跨平台开发是指在不同操作系统平台之间,比如Windows、Mac OS X、Linux/Unix等,进行应用程序开发的过程,使得同一份C++源代码能够在这些不同的平台上无差异地编译和运行,同时保持功能、可用性和质量不打折扣。...

    GCC资料大全

    3. **多平台支持**:GCC不仅适用于Linux,还可在其他各种操作系统上运行,如Windows、Mac OS、FreeBSD等,这得益于其跨平台的特性。 4. **调试支持**:GCC产生的对象文件和可执行文件可以与GDB(GNU调试器)配合...

    FreeSwitch配置和使用手册.doc

    - **Linux**:在Linux上,通常通过Git克隆源代码,然后使用autotools或CMake进行编译安装。根据不同的Linux发行版,可能需要安装额外的库和依赖。 - **Mac**:在MacOS上,可以使用Homebrew或者源代码编译安装,...

    cmake入门实践书籍

    * 交叉编译:CMake 能够支持交叉编译,使得项目能够在不同的平台上编译和运行。 CMake 的未来 CMake 的未来发展方向包括: * weiter Verbesserung der Performance:CMake 将继续优化其性能,使得项目的构建变得...

    cmake-3.15.4.tar.gz

    它通过提供一种高级的、抽象的、平台无关的语言来描述项目的构建过程,使得开发者可以更方便地在不同的操作系统上编译项目,包括Windows、Linux、Mac OS X等。CMake并不直接执行编译和链接操作,而是生成特定构建...

    GCC中文手册.rar

    GCC支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada、Go等,并且能够运行在多种操作系统上,如Linux、Windows、Mac OS X等。本GCC中文手册是为帮助开发者更方便地理解和使用GCC而编写的,旨在提供详尽的...

    CMake学习手册

    在苹果Mac系统上,CMake能够生成Xcode工程文件;而在Windows平台上,CMake能够生成Visual Studio工程文件。这种灵活性大大方便了不同操作系统下的软件开发和构建工作。 此外,CMake具备管理大型项目的能力,能够...

    RTL8188FTV/RTL8188FU Linux驱动,成功移植到全志A40i上

    1. **环境准备**:确保全志A40i设备上已经安装了开发工具链,如交叉编译器,以及必要的构建系统如make和autotools。 2. **源码获取**:下载驱动程序源代码,这可能是从给出的链接或其他来源获取。 3. **配置修改**:...

Global site tag (gtag.js) - Google Analytics