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. JDBC 事务(二)回滚到保存点

    public class SavePointTest { /**      * @param args      * @throws SQLException      */     public s ...

  2. 微信小程序项目实战之豆瓣天气

    概述 微信小程序项目实战之豆瓣天气 详细 代码下载:http://www.demodashi.com/demo/10943.html 一.准备工作 1.注册微信小程序 2.在小程序设置中设置reque ...

  3. SuperMap iObjects for Spark使用

    本文档环境基于ubuntu16.04版本,(转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢) 1. 基础环境搭建 基础环境搭建 ...

  4. 【LeetCode】105. Construct Binary Tree from Preorder and Inorder Traversal

    Construct Binary Tree from Preorder and Inorder Traversal Given preorder and inorder traversal of a ...

  5. 树莓派/RaspberryPi 内核源码下载

    树莓派的源码有两种下载方式:压缩包下载和git clone指令下载. 1.压缩包下载 选择对应分支,点击Github界面的 下载按钮即可,如下图: 测试发现,同样的分支,用压缩包方式下载后编译会出错, ...

  6. mosquitto ---配置SSL/TLS

    在服务器电脑上面创建myCA文件夹, 如在/home/qa/ 文件夹下使用命令, mkdir myCA 然后执行以下命令,我们将创建并使用其他用户没有权限访问的目录. sudo chmod 700cd ...

  7. C#:依据目录填充树视图

    #region 依据目录填充树视图 /// <summary> /// 依据文件夹目录,填充树视图 /// </summary> /// <param name=&quo ...

  8. 10 分钟实现一个自己的server监控器

    需求 近期须要给自己的server加入监控器.目的是监控server的内存.CPU.磁盘占用率,资源占用率过高的话能给自己发个提醒.当前主流的平台通常会提供邮件.短息.甚至会提供微信提醒,只是这类提醒 ...

  9. STL中map错误用法一例

    [GBK]0G's fans( me ) 13:34:26typedef struct _TX_DATA{ int len; unsigned char buff[0x100]; } TX_DATA, ...

  10. ffmpeg command

    1. 列出当前系统的设备列表 ffmpeg -list_devices true -f dshow -i dummy 2. 列出设备Integrated Camera的信息 ffmpeg -list_ ...