open toolchain on ubuntu 12.04

###ubuntu 12.04 安装llvm3.4、ios-lang交叉编译环境小记 在ubuntu 12.04上先安装gcc-4.8,然后安装llvm,clang,libcxx,libcxxabi.由于libcxx和libcxxabi相互依赖,需要两次安装libcxx。最后安装theos等开放的ios开发工具链 安装gcc-4.8如前文所述install gcc4.8 on ubuntu 12.04 安装llvm,clang /etc/apt/sources.list中添加如下两行:

    deb http://llvm.org/apt/precise/ llvm-toolchain-precise-3.4 main
    deb-src http://llvm.org/apt/precise/ llvm-toolchain-precise-3.4 main

检索签名:

    wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add -

安装与llvm-3.4,clang-3.4相关的所有包:

    apt-get install clang-3.4 clang-3.4-doc libclang-common-3.4-dev libclang-3.4-dev libclang1-3.4 libclang1-3.4-dbg libllvm-3.4-ocaml-dev libllvm3.4 libllvm3.4-dbg lldb-3.4 llvm-3.4 llvm-3.4-dev llvm-3.4-doc llvm-3.4-examples llvm-3.4-runtime clang-modernize-3.4 clang-format-3.4 python-clang-3.4 lldb-3.4-dev

安装libcxx:

    svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx

查看g++使用的头文件:

    echo | g++ -Wp,-v -x c++ - -fsyntax-only

将会输出类似如下结果:

    ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
    ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux- gnu/4.8/../../../../x86_64-linux-gnu/include"
    ### #include "..." search starts here:
    ### include <...> search starts here:
    /usr/include/c++/4.8
    /usr/include/c++/4.8/x86_64-linux-gnu
    /usr/include/c++/4.8/backward
    /usr/lib/gcc/x86_64-linux-gnu/4.8/include
    /usr/local/include
    /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
    /usr/include/x86_64-linux-gnu
    /usr/include
    End of search list.

编译安装libcxx:

    CC=clang CXX=clang++ cmake -G "Unix Makefiles" -DLIBCXX_CXX_ABI=libsupc++ - DLIBCXX_LIBSUPCXX_INCLUDE_PATHS="/usr/include/c++/4.7/;/usr/include/x86_64-linux- gnu/c++/4.7/" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr <libc++-source-dir>
    make
    sudo make install

安装libcxxabi 首先安装相关依赖:

    sudo apt-get install g++ subversion cmake swig python-dev libedit-dev libunwind8 libunwind8-dev

下载源码并编译:

    svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi
    cd libcxxabi/lib
    ./buildit
    sudo cp libc++abi.so.1.0 /usr/lib
    sudo ln -s /usr/lib/libc++abi.so.1.0 /usr/lib/libc++abi.so.1
    sudo ln -s /usr/lib/libc++abi.so.1 /usr/lib/libc++abi.so

使用libc++abi来安装libc++

    svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx
    cd libcxx
    mkdir build
    cd build
    CC=clang CXX=clang++ cmake -G "Unix Makefiles" -DLIBCXX_CXX_ABI=libcxxabi -  DLIBCXX_LIBCXXABI_INCLUDE_PATHS="<libc++abi-source-dir>/include" -  DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr ../
    make
    sudo make install

至此ubuntu 12.04上的LLVM环境就算搭建好了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏行者常至

将oracle驱动包加到maven中

2、确认maven环境变量已整确(cmd 中执行 mvn -v 显示maven的版本信息);

9330
来自专栏向治洪

android混淆和反编译

混淆 Android Studio: 只需在build.gradle(Module:app)中的buildTypes中增加release的编译选项即可,...

27280
来自专栏高性能服务器开发

(三)服务器端的程序架构介绍1

通过上一节的编译与部署,我们会得到TeamTalk服务器端以下部署程序: db_proxy_server file_server http_msg_server...

38570
来自专栏软件开发

WebSocket与消息推送

B/S结构的软件项目中有时客户端需要实时的获得服务器消息,但默认HTTP协议只支持请求响应模式,这样做可以简化Web服务器,减少服务器的负担,加快响应速度,因为...

81450
来自专栏软件开发

HTML5 学习总结(五)——WebSocket与消息推送

B/S结构的软件项目中有时客户端需要实时的获得服务器消息,但默认HTTP协议只支持请求响应模式,这样做可以简化Web服务器,减少服务器的负担,加快响应速度,因为...

42080
来自专栏运维一切

ceph mon自行shutdown故障记录 原

主要在这个“reached critical levels of available space on local monitor storage”,如果mon...

9710
来自专栏康怀帅的专栏

Maven 使用详解

Maven 简单配置说明。 配置 镜像、中央仓库 配置文件位于~/.m2/settings.xml <mirrors> <mirror> ...

30950
来自专栏代码GG之家

封装之路(四) BaseFragment BaseViewModel BaseModel

框架实时变更,一直在调整,也是自己的实践过程,继续奋斗了。估计大家对实现没啥兴趣,这节结束,后面直接去github地址看更新了,就不再开贴说了。当这个框架完成时...

227100
来自专栏开发与安全

linux系统编程之文件与I/O(一):文件的打开关闭

一、文件描述符 对于Linux而言,所有对设备或文件的操作都是通过文件描述符进行的。当打开或者创建一个文件的时候,内核向进程返回一个文件描述符(非负整数)。后续...

26390
来自专栏三丰SanFeng

Linux进程间通信(一) - 管道

管道(pipe) 普通的Linux shell都允许重定向,而重定向使用的就是管道。 例如:ps | grep vsftpd .管道是单向的、先进先出的、无结构...

25970

扫码关注云+社区

领取腾讯云代金券