1. About clang++

office site:http://clang.llvm.org/

A major focus of our work on clang is to make it fast, light and scalable. The library-based architecture of clang makes it straight-forward to time and profile the cost of each layer of the stack, and the driver has a number of options for performance analysis. Many detailed benchmarks can be found online.

2. System environment configuration

Getting Introduction from the office website:

Compiling LLVM requires that you have several software packages installed. The table below lists those required packages. The Package column is the usual name for the software package that LLVM depends on. The Version column provides “known to work” versions of the package. The Notes column describes how LLVM uses the package and provides other details.

Package Version Notes
GNU Make 3.79, 3.79.1 Makefile/build processor
GCC >=4.7.0 C/C++ compiler1
python >=2.5 Automated test suite2
GNU M4 1.4 Macro processor for configuration3
GNU Autoconf 2.60 Configuration script builder3
GNU Automake 1.9.6 aclocal macro generator3
libtool 1.5.22 Shared library manager3
zlib >=1.2.3.4 Compression library4

local System configuration analysis :

# /usr/bin/gcc4.4.5 --version
gcc4.4.5 (GCC) 4.4. (Red Hat 4.4.-) # python -V
Python 2.6. # make -v
GNU Make 3.81 # automake --version
automake (GNU automake) 1.11. # libtool --version
ltmain.sh (GNU libtool) 2.2.6b
Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>,

3. gcc upgrade

3.1 gmp,mpfr,mpc installation

wget https://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.bz2
wget http://www.mpfr.org/mpfr-current/mpfr-3.1.2.tar.gz
wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.2.tar.gz
tar jxvf gmp-5.1..tar.bz2
tar zxvf mpfr-3.1..tar.gz
tar zxvf mpc-1.0..tar.gz cd gmp-5.1.
./configure --enable-cxx CPPFLAGS=-fexceptions
make; make install
cd ../mpfr-3.1.; ./configure
make; make install
cd ../mpc-1.0.; ./configure
make; make install

3.2 gcc upgrade

wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
tar -xvjf gcc-4.8..tar.bz2
cd gcc-4.8.mkdir gcc-4.8.-build
cd gcc-4.8.-build
../configure --prefix=/usr/local/gcc-4.8.2 --enable-languages=c,c++
make make install

notice:change the links in /usr/lib  & /usr/bin [only need make some softlinks to the directory, incase of pollute the original files . You can remove the softlinks while necessary which is not commentary ]

cd /usr/bin/
# mv gcc gcc4.4.5
# mv g++ g++4.4. ln -sf /usr/local/gcc-4.8./bin/gcc gcc
ln -sf /usr/local/gcc-4.8./bin/g++ g++
ln -sf /usr/local/gcc-4.8./lib64/libstdc++.so.6.0. /usr/lib64/libstdc++.so.

4. make building files

4.1  Checkout LLVM:
Change directory to where you want the llvm directory placed.
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
4.2 Checkout Clang:
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
cd ../..
4.3 Checkout extra Clang Tools: (optional)
cd llvm/tools/clang/tools
svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra
cd ../../../..
4.4 Checkout Compiler-RT:
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
cd ../..
4.5 Build LLVM and Clang:
mkdir build (for building without polluting the source dir)
cd build
../configure --prefix=/usr/local/clang --enable-optimized
make

4.6 error resolved

checking for x86_64-unknown-linux-gnu-gcc... /data/installs/gcc-4.7./host-x86_64-unknown-linux-gnu/gcc/xgcc -B/data/installs/gcc-4.7./host-x86_64-unknown-linux-gnu/gcc/ -B/usr/local/gcc-4.7./x86_64-unknown-linux-gnu/bin/ -B/usr/local/gcc-4.7./x86_64-unknown-linux-gnu/lib/ -isystem /usr/local/gcc-4.7./x86_64-unknown-linux-gnu/include -isystem /usr/local/gcc-4.7./x86_64-unknown-linux-gnu/sys-include
checking for suffix of object files... configure: error: in `/data/installs/gcc-4.7./x86_64-unknown-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[]: *** [configure-stage1-target-libgcc] Error
make[]: Leaving directory `/data/installs/gcc-4.7.'
make[]: *** [stage1-bubble] Error
make[]: Leaving directory `/data/installs/gcc-4.7.'
make: *** [all] Error

resolution: due to the official document, the gcc-4.7.4 can not work normally with the clang++ , which been improved to be a bug

resolution:

5.  clang environment test

root@192.168.100.252:/data/forilen# cat t.c
#include <stdio.h>
int main(int argc, char **argv) { printf("hello world\n"); }
root@192.168.100.252:/data/forilen# clang t.c
root@192.168.100.252:/data/forilen# ls
a.out for.sh gerritDir git scripts t.c
root@192.168.100.252:/data/forilen# ./a.out
hello world

6. References

[1]. gcc upgrade: http://my.oschina.net/vaero/blog/210485
[2]. gcc download: http://gcc.parentingamerica.com/releases/ https://gcc.gnu.org/mirrors.html
[3]. clang installation: http://clang.llvm.org/get_started.html#build
[4]. python Introduction:  http://blog.csdn.net/pan_tian/article/details/7684409

 

redhat6.2 clang编译环境搭建(采用源码包编译安装)的更多相关文章

  1. LAMP 环境搭建之源码包编译安装

    mysql用的二进制包安装. Apache php 用的源码包 mysql版本5.5.46    Apache版本2.4.7  PHP版本:5.5 mysql安装部分参考了阿铭linux的内容. 这是 ...

  2. Emscripten编译环境搭建--将C和C++编译成JS

    Emscripten编译环境搭建--将C和C++编译成JS 需求:linux环境下用js执行c.c++文件,使用emscirpten编译器 目标:搭建好Emscripten环境 环境:Ubuntu16 ...

  3. MySQL源码包编译安装

    +++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库实力部署时间:2019年3月9日内容:MySQL源码包进行编译,然后部署MySQL单实例重点 ...

  4. CentOS 7.2使用源码包编译安装MySQL 5.7.22及一些操作

    CentOS 7.2使用源码包编译安装MySQL 5.7.22及一些操作 2018年07月05日 00:28:38 String峰峰 阅读数:2614   使用yum安装的MySQL一般版本比较旧,但 ...

  5. 编译最新版webrtc源码和编译好的整个项目10多个G【分享】

    编译最新版webrtc源码和编译好的整个项目10多个G[分享] 参考https://webrtc.org/native-code/development/编译最新版webrtc源码: Git clon ...

  6. zabbix 3.2.2 server端(源码包)安装部署 (一)【转】

    环境准备: 操作系统 CentOS 6.8 2.6.32-642.11.1.el6.x86_64 zabbix server 172.16.10.150 zabbix agent 172.16.10. ...

  7. Linux——【rpm、yun、源码包】安装

    RPM包或者安装源码包 在windows下安装一个软件很轻松,只要双击.exe的文件,安装提示连续“下一步”即可,然而linux系统下安装一个软件似乎并不那么轻松,因为我们不是在图形界面下.所以我们要 ...

  8. Linux学习笔记15—RPM包的安装OR源码包的安装

    RPM安装命令1. 安装一个rpm包rpm –ivh 包名“-i” : 安装的意思“-v” : 可视化“-h” : 显示安装进度另外在安装一个rpm包时常用的附带参数有:--force : 强制安装, ...

  9. 源码包的安装、rsync同步、inotify监测

    一.源码包的安装 1.源码包的作用:yum 使用的是rpm包,rpm包安装的不能指定安装位置 源码包可以按需选择/定制,及时修复bug ,适用于各种平台 2.大致过程:源码包——>make gc ...

随机推荐

  1. MySQL InnoDB简介

    从MySQL 5.5版本开始InnoDB已经是默认的表存储引擎 InnoDB 1:完全支持ACID 2:支持行级锁 3:支持MVCC 4:支持外键 MySQL 5.1版本 MySQL 5.1版本之前, ...

  2. async [ə'zɪŋk] 函数

    ES7提供了async函数,使得异步操作变得更加方便.async函数是什么?一句话,async函数就是Generator函数的语法糖. 例1: var asyncFun = async functio ...

  3. Android WiFi热点7.1以上版本适配

    代码地址如下:http://www.demodashi.com/demo/13907.html 一.准备工作 开发环境:  jdk1.8  AS(3.0.1) 运行环境:  华为V10(Android ...

  4. Maven--要点笔记

    --maven笔记 1.maven命令 2.archetype插件:用于创建符合maven规定的文件夹骨架   命令: mvn archetype:generate 3. 坐标:构件 仓库: 本地仓库 ...

  5. ubuntu 命令行下查看网页 w3m

    w3m localhost/index.php

  6. 关于windows10 CMD 的一些操作

    之前接触过cmd的一些操作方法,比如用dir.tasklist等一些方法,但是用了会立马忘记,再用到时又要重新google,这着实让我头痛!!! 今天又碰到一个关于改变目录的问题,又是纠结万分,所以就 ...

  7. 网页中PNG透明背景图片的完美应用

    PNG 图片在网站设计中是不可或缺的部分,最大的特点应该在于 PNG 可以无损压缩,而且还可以设置透明,对于增强网站的图片色彩效果有重要的作用. 但为什么 PNG 图片却没有 GIF 和 JPG 图片 ...

  8. mysql数据类型与运算符

    一.数据类型 1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediu ...

  9. Lambda编写斐波那契数列

    还需要考虑溢出等问题,闲来无事写了写 Func<float, float, float> a = (arg1, arg2) => 0f;//init ; a = (lastNumbe ...

  10. iOS代码技巧之判断设备及状态

    转自:http://my.oschina.net/joanfen/blog/149076 一.判断设备 01 //设备名称 02 return [UIDevice currentDevice].nam ...