linux环境c++开发:ubuntu12.04使用llvm3.4.2

什么是 clang/llvm/libc++[1]

clang 是最近几年(在大财主苹果的支持下)发展得非常好的 C 家族语言 (包括C/C++/Obj-C/Obj-C++) 编译器前端,所谓前端,就是它可以认识 C/C++/Obj-C/ObjC++ 代码,并且把它转化成某种更接近机器指令的形式。理论上说,“某种形式”是语法树,但作为一个工具,clang 实际上会帮助你调用链接器生成可执行代码,这跟 gcc 是一样的。

llvm 是一个通用的编译优化和代码生成平台,它定义了一个中间语言 LLVM IR,只要前端把代码编译成 LLVM IR,就可以使用 llvm 丰富的优化模块和代码生成模块。换句话说,llvm 让“创造一种计算机语言”变成了一个相对容易的事情,这件事情会有深远的影响。

libc++ 是针对 clang 特别重写的 C++ 标准库,也算是 clang 的“御用”库了。这就像 libstdc++ 和 gcc 的关系,但 clang 也可以用 libstdc++。

何处下载

http://llvm.org/releases/download.html

目前最新版本为3.4.2;其中提供了为ubuntu12.04_x86_64预编译好的二进制文件;

编译源码

然而事情没有想象中那么简单,我的系统是ubuntu 12.04.4 LTS 32位系统。原先使用预编译好的二进制文件,结果提示无法执行二进制文件。使用ls -l查看clang权限,发现三组用户均有执行权限,因此考虑是编译平台问题,注意到预编译的版本为x86_64,原以为指的是x86与x64平台均可,网上查询之后发现x86_64指的是64位系统。

通过命令

uname -m

可查看ubuntu是32位还是64位,如果是i386到i686,那就是32位系统;如果是x86_64 ,那就是64系统[2]。

无奈只好下载源码在本机上编译。

步骤1:获取源码

http://clang.llvm.org/get_started.html中使用的是svn的方法,当然我们也可以从"何处下载"中提到的地址去下载源码。需要获取的源码有:Clang source code、LLVM source code、Clang Tools Extra(可选)、Compiler RT source code。

这里通过浏览器下载获得源码,参考svn方法,下载完成后将文件夹组织如下

LLVM source code -> llvm

Clang source code -> llvm/tools/clang

Clang Tools Extra(optional) -> llvm/tools/clang/tools/extra

Compiler RT source code -> llvm/projects/compiler-rt

步骤2:编译LLVM和Clang

mkdir build

与llvm目录同层,建立build目录存放编译结果

cd build
../llvm/configure --enable-optimized --enable-targets=host-only

进入build目录,并配置llvm[3],其中的选项在http://llvm.org/docs/GettingStarted.html#getting-started-with-llvm中提到

  • ../llvm/configure [options] Some common options:

    • --prefix=directory — Specify for directory the full pathname of where you want the LLVM tools and libraries to be installed (default /usr/local).
    • --enable-optimized — Compile with optimizations enabled (default is NO).
    • --enable-assertions — Compile with assertion checks enabled (default is YES).
  • make [-j] — The -j specifies the number of jobs (commands) to run simultaneously. This builds both LLVM and Clang for Debug+Asserts mode. The --enable-optimized configure option is used to specify a Release build.

配置完成后就是

make -j2
make install

测试

clang helloworld.c

会在当前目录下生成a.out文件,./a.out执行之,输出helloworld即大功告成。

[1]http://www.cnblogs.com/ralphjzhang/archive/2011/12/02/2272671.html by 一念天堂

[2]http://www.aiseminar.cn/bbs/forum.php?mod=viewthread&tid=1664 by jink2005

[3]http://www.cnblogs.com/Frandy/archive/2012/10/20/llvm_clang_libcxx_cxx11.html by Frandy.CH

linux环境c++开发:ubuntu12.04使用llvm3.4.2,布布扣,bubuko.com

时间: 2024-08-06 15:58:55

linux环境c++开发:ubuntu12.04使用llvm3.4.2的相关文章

linux内核升级(ubuntu12.04从3.13.0升级到3.4.0 )

花了一天的时间,终于把ubuntu12.04 的linux内核版本从3.13.0升级到3.4.0 升级后,系统更加稳定. 具体步骤:# wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.tar.gz# tar zxvf linux-3.4.tar.gz -C /usr/src# cd /usr/src/linux-3.4# make menuconfig# make# make modules_install# cp arch/

Linux--U盘安装Ubuntu12.04[转]

http://www.cnblogs.com/plokmju/p/linux_installubuntu.html 最近一直在研究Android内核驱动开发的相关事宜,使用VMware虚拟机虽然可以更方便的开发,但是对于开发环境硬件的要求还是比较高的,若用于开发,效率太低了,所以考虑使用单独PC去装载Linux环境进行开发,这里这里挑选的Ubuntu,因为Google测试Android源代码时使用的就是Ubuntu.因此如果从事Android底层驱动开发,强烈建议使用Ubuntu.本篇博客就Ub

Linux--U盘安装Ubuntu12.04

前言 最近一直在研究Android内核驱动开发的相关事宜,使用VMware虚拟机虽然可以更方便的开发,但是对于开发环境硬件的要求还是比较高的,若用于开发,效率太低了,所以考虑使用单独PC去装载Linux环境进行开发,这里这里挑选的Ubuntu,因为Google测试Android源代码时使用的就是Ubuntu.因此如果从事Android底层驱动开发,强烈建议使用Ubuntu.本篇博客就Ubuntu系统使用U盘安装到硬盘,进行详细的讲解,这里使用的Ubuntu镜像版本是Ubuntu12.04. 本篇

Ubuntu12.04搭建Tomcat7.0

1.安装JAVA环境 apt-get update apt-get install openjdk-7-jdk 2.配置JAVA环境变量:vim /etc/environment JAVA_HOME=JDK目录(一般在=/usr/lib/jvm/jdk1.7.0_04/)CLASSPATH=.:/usr/lib/jvm/jdk1.7.0_04/lib 3.获取Tomcat安装包官方下载一个解压即可,下载地址:http://mirrors.cnnic.cn/apache/tomcat/tomcat

Linux环境下使用gcc编译,gdb反汇编C语言程序

使用虚拟机 VMware Workstation 10 Linux环境:Ubuntu 14.04 LTS Server amd64 我把过程截图如下. 首先是hello world程序: 备注: gcc -o 参数,指定生成程序文件名. gdb下,disas命令对应英文为disassembler,反汇编. 这里没有执行程序.如果想执行,会出现: [email protected]:~$./helloworld Hello World! [email protected]:~$ 当然,前面要加 .

intel dpdk在ubuntu12.04中測试testpmd、helloworld程序

一.測试环境 操作系统:ubuntu12.04   x86_64 dpdk版本号:1.6.0r2 虚拟机:vmware 10 网卡: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01) 二.測试准备 利用vmware 给 Ubuntu 12.04加入4块虚拟网卡.加入网卡的过程中选择的是默认的NAT模式. 三.測试过程 1.利用setup.sh測试testpmd程序 1).配置环境变量RTE_SDK 和

4.1. 如何在Windows环境下开发Python

4.1. 如何在Windows环境下开发Python 4.1. 如何在Windows环境下开发Python 4.1.1. Python的最原始的开发方式是什么样的 4.1.1.1. 找个文本编辑器,新建个.py文件,写上Python代码 4.1.1.2. 打开Windows的cmd,并且切换到对应的python脚本所在目录 4.1.1.2.1. 方法1:手动打开cmd,并cd到对应路径 4.1.1.2.2. 方法2:通过Notepad++的Open current dir cmd 4.1.1.3

嵌入式开发(一) Ubuntu12.04下搭建交叉编译环境

操作系统:Ubuntu12.04 AMD64位 交叉编译环境:arm-Linux gcc版本4.4.3 前言: 首先理解一下交叉编译的意思.我们要给嵌入式设备写应用程序,但是又不能在嵌入式设备上完成所有的代码开发工作,只能在一台工作PC上完成然后编译成二进制文件上传到嵌入式设备上.但是我们选用的编译工具链不能是工作PC上的,应该是嵌入式设备上的编译工具链,所以,我们要在PC上搭建适用于嵌入式设备的交叉编译工具链.例如,PC上的gcc版本可能是4.6但是arm-linux-gcc的版本却是4.4.

Ubuntu12.04 配置Java开发环境:JDK1.7+Eclipse+Tomcat7.0

软硬件环境 Ubuntu12.04+JDK1.7+Eclipse+Tomcat7.0 内容列表 1.安装JDK1.7,配置JAVA环境 2.安装Eclipse 3.安装Tomcat7.0 1.安装JDK1.7,配置JAVA环境 step 1:下载JDK step 2:解压到/usr/local中 sudo tar -zxvf jdk-7u67-linux-x64.tar.gz -C /usr/local step 3:配置环境变量 打开/etc/profile文件:sudo gedit /etc