相关介绍资料如下:

Boost编译
http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz/download 下载文件
http://www.boost.org/users/history/version_1_55_0.html 官方对于clang的说明情况
关于clang的验证
Linux:
Clang: 3.3, 3.2, 3.1, 3.0
如上可见,这个官方已经验证过

ICE编译
http://www.zeroc.com/download/Ice/3.5/Ice-3.5.1.tar.gz
http://www.zeroc.com/download/Ice/3.5/ThirdParty-Sources-3.5.1.tar.gz
http://www.zeroc.com/download/Ice 这里有所有的版本
http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
这个官方已经声明对于Linux下的clang不支持,不过很多人已经验证过【在zeroc的论坛搜索clang可以看到】

首先在如下站点下载这些C++工具库

http://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fboost%2Ffiles%2Fboost%2F1.55.0%2F&ts=1387440583&use_mirror=jaist

http://www.zeroc.com/download/Ice/3.5/Ice-3.5.1.tar.gz

http://www.zeroc.com/download/Ice/3.5/ThirdParty-Sources-3.5.1.tar.gz

开工前首先需要把clang安装好,具体参考 http://www.cnblogs.com/2018/p/3464638.html

如下是具体的配置步骤

boost boost_1_55_0.tar.gz

bootstrap.sh

16,17,18

LIBDIR=/root/work/clang+llvm-3.3-amd64-Ubuntu-10.04.4/lib/c++

INCLUDEDIR=/root/work/clang+llvm-3.3-amd64-Ubuntu-10.04.4/lib/c++/v1

LIBS="c++"

211 增加

TOOLSET=clang

使用./b2 可以进行编译,在 stage/lib 下是编译出来的 .a .so 等库文件

ICE Ice-3.5.1.tar.gz ThirdParty-Sources-3.5.1.tar.gz

mcpp bzip需要编译

Ice-3.5.1/cpp/config/Make.rules首行增加

CC=clang

CXX=clang++

CPP=clang -E

Ice-3.5.1/cpp/config/Make.rules.Linux

模仿g++,增加:ifeq ($(CXX),clang++)

bzlib.h 拷贝到 cpp/src下

libbz2.a 拷贝到 cpp/lib下

make

如上即可使用clang 编译出来对应的库,其中ice之编译除了基础库,如果需要编译其他的模块,类似处理即可

使用C++11和ice的混合使用的例子

#Ice非c11版本和c11版本的类混合使用

clang++ -c -I. -I/root/work/tmp/Ice-3.5.1/cpp/include Hello.cpp

clang++ -c -I. -I/root/work/tmp/Ice-3.5.1/cpp/include Client.cpp

clang -std=c++11 -stdlib=libc++ -I/root/work/clang+llvm-3.3-amd64-Ubuntu-10.04.4/lib/c++/v1 -c c11.cpp

clang++ -stdlib=libc++  -L/root/work/libs -o client Hello.o Client.o c11.o -lIce -lIceUtil -lc++

详细的代码和例子参考 http://pan.baidu.com/s/1nGab5

Clang编译出的boost 和ice库的使用http://pan.baidu.com/s/1nGab5 参考其他的test目录的具体代码

其中一个例子测试了boost uuid的使用,clang的性能大体提升2%左右,看来clang的二进制性能还是比较高的。

附录【配置安装脚本】

#!/bin/bash

:<<EOF

#验证机器环境

#target=x86_64-linux-gnu

#Thread model: posix

#gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)

###

EOF

pushd pkg

#2 boost

tar -xzvf boost_1_55_0.tar.gz -C .

cp -f pack/bootstrap.sh boost_1_55_0/.

#compile boost

pushd  boost_1_55_0

./bootstrap.sh

./b2

#now  boost_1_55_0/stage/lib 是clang编译出来的库

popd

#3 ICE

tar -xzvf Ice-3.5.1.tar.gz -C .

cp pack/Make.rules Ice-3.5.1/cpp/config/.

cp pack/Make.rules.Linux Ice-3.5.1/cpp/config/.

#dep mcpp

tar -xzvf ThirdParty-Sources-3.5.1.tar.gz -C .

pushd ThirdParty-Sources-3.5.1

tar -xzvf mcpp-2.7.2.tar.gz -C .

popd

pushd ThirdParty-Sources-3.5.1/mcpp-2.7.2

patch -p0 < ../mcpp/patch.mcpp.2.7.2

./configure  CFLAGS=-fPIC --enable-mcpplib --disable-shared

cp -f ../../pack/mcpp_Makefile src/Makefile

pushd src

make

popd

popd

cp -f ThirdParty-Sources-3.5.1/mcpp-2.7.2/src/mcpp_out.h Ice-3.5.1/cpp/src/.

cp -f ThirdParty-Sources-3.5.1/mcpp-2.7.2/src/mcpp_lib.h Ice-3.5.1/cpp/src/.

cp -f ThirdParty-Sources-3.5.1/mcpp-2.7.2/src/.libs/libmcpp.a Ice-3.5.1/cpp/lib/.

#dep bz2

mkdir -p bzip2

tar -xzvf bzip2-1.0.6.tar.gz -C bzip2

pushd bzip2

cp -f ../pack/bzMakefile bzip2/Makefile

make

popd

cp -f bzip2/bzlib.h Ice-3.5.1/cpp/src/.

cp -f bzip2/libbz2.a Ice-3.5.1/cpp/lib/.

#compile ICE using clang

pushd Ice-3.5.1/cpp/src

make

popd

#libIce.so libIceUtil.so 和slice编译出来,其他的需要安装对应的内容,没有验证

#ICE sample

cp -f pack/config.* Ice-3.5.1/cpp/demo/Ice/hello/.

pushd Ice-3.5.1/cpp/demo/Ice/hello

make

popd

#deploy library

cp -f Ice-3.5.1/cpp/lib/libIce* /usr/lib/.

#copy ICE测试验证程序

mkdir -p ../test/ice

cp -f Ice-3.5.1/cpp/demo/Ice/hello/client ../test/ice/.

cp -f Ice-3.5.1/cpp/demo/Ice/hello/server ../test/ice/.

cp -f Ice-3.5.1/cpp/demo/Ice/hello/config.* ../test/ice/.

#cleanup

rm -r -f bzip2

rm -r -f ThirdParty-Sources-3.5.1

rm -r -f Ice-3.5.1

###

popd

详细资料参考 http://pan.baidu.com/s/1nGab5

clang 搭建和编译boost 和zero ICE库 (Ubuntu10 64)的更多相关文章

  1. Ubuntu 15.04 clang++ 3.6 编译boost 1.59/1.55

    Ubuntu 15.04已经可以直接通过apt-get insall 安装clang 3.6, 并且预装的gcc版本是4.9.2.这些安装过程在这里介绍. 首先下载boost源码 wget -O bo ...

  2. C++ 系列:编译 boost

    Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...

  3. IOS上编译boost库

    环境:xcode9mac os 10.13 1.下载boost库并解压2.cd到解压后的文件包内,执行 sh bootstrap.sh(解压后会得到这个脚本文件).3.执行./b2 编译整个库.4.经 ...

  4. FFMPEG在嵌入式硬件上应用之 —— 基本环境搭建及编译

    前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了.今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家 ...

  5. VS2010编译Boost 1.57 静态链接库

    http://www.cnblogs.com/cuish/p/4175491.html 0.前提 Boost库版本 1.57.0 下载地址 http://www.boost.org/users/his ...

  6. clang编译mysql(Ubuntu10 64位)

    编译安装mysql(Ubuntu10 64位) http://www.cnblogs.com/2018/p/3482259.html 这个介绍了gcc形式编译安装mysql 那我们使用clang进行编 ...

  7. 在linux环境编译boost

    1.在boost官网:http://www.boost.org/下载相应版本的boost 2.解压boost到相应目录,在boost跟目录下有b2可执行程序,可以通过输入命令“/b2 --help”, ...

  8. OSG+VS2010+win7环境搭建---OsgEarth编译

    OSG+VS2010+win7环境搭建---OsgEarth编译 转:http://www.cnblogs.com/hnfxs/p/3161261.html Win7下 osg+vs2010环境搭建 ...

  9. Linux-QT 开发环境搭建以及编译镜像

    搭建Linux-QT 开发环境,需要先搭建Android 的编译环境,然后在Android 编译环境的基础上,再搭建Linux-QT 编译环境. 第一:编译器. 第二:设置环境变量.环境变量设置后,编 ...

随机推荐

  1. Greenplum 数据库安装部署(生产环境)

    Greenplum 数据库安装部署(生产环境) 硬件配置: 16 台 IBM X3650, 节点配置:CPU 2 * 8core,内存 128GB,硬盘 16 * 900GB,万兆网卡. 万兆交换机. ...

  2. EasyUI treegrid 获取编辑状态中某字段的值 [getEditor方法获取不到editor]

    如题,在treegrid里,按照api里getEditor方法的说明, getEditoroptionsGet the specified editor, the options contains t ...

  3. 基于HT for Web 3D技术快速搭建设备面板

    以真实设备为模型,搭建出设备面板,并实时获取设备运行参数,显示在设备面板上,这相比于纯数值的设备监控系统显得更加生动直观.今天我们就在HT for Web的3D技术上完成设备面板的搭建. 我们今天模拟 ...

  4. 使用Qt installer framework制作安装包

    一.介绍 使用Qt库开发的应用程序,一般有两种发布方式:(1)静态编译发布.这种方式使得程序在编译的时候会将Qt核心库全部编译到一个可执行文件中.其优势是简单单一,所有的依赖库都集中在一起,其缺点也很 ...

  5. 歌词文件解析(一):LRC格式文件的解析

    LRC是英文lyric(歌词)的缩写,被用做歌词文件的扩展名.以lrc为扩展名的歌词文件可以在各类数码播放器中同步显示.LRC 歌词是一种包含着“*:*”形式的“标签(tag)”的基于纯文本的歌词专用 ...

  6. 全动态Portlet点击后选中样式

    1  背景概述 在配置公司云平台的帮助信息过程中,由于使用的全动态portlet的数据URL获取到的是静态数据,没有办法在后台做选中的逻辑判断,所以需要在前台来控制选中列表的样式,这里将对前台选中列表 ...

  7. makefile变量赋值

    在定义变量的值时,我们可以使用其它变量来构造变量的值,在Makefile中有两种方式来在用变量定义变量的值. 先看第一种方式,也就是简单的使用“=”号,在“=”左侧是变量,右侧是变量的值,右侧变量的值 ...

  8. 优秀ASP.NET程序员修炼之路

    初级的程序员或经验不足的程序员往往只意识到自己的程序是写给计算机的,而不会在意程序其实也是写给人的,或在意得不够.不全面. 写给机器的程序,往往追求的是运行正确.执行效率能满足要求.但程序员的任务仅仅 ...

  9. 炉石传说 C# 开发笔记 (续)

    炉石传说山寨的工作一直在进行着,在开发过程中深深体会到,对于业务的理解和整个程序的架构的整理远比开发难得多. 在开发过程中,如果你的模型不合理,不准确,很有可能造成代码的混乱,冗余,难以维护和扩展性比 ...

  10. 从NavigationController 下的UITableView中移除 header

    this.AutomaticallyAdjustsScrollViewInsets = false; 解析:AutomaticallyAdjustsScrollViewInsets为系统自动为适应na ...