zoukankan      html  css  js  c++  java
  • clang 搭建和编译boost 和zero ICE库 (Ubuntu10 64)

    相关介绍资料如下:

    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++11ice的混合使用的例子

    #Icec11版本和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 

  • 相关阅读:
    【LOJ#10027】魔板
    【LOJ#2653】山峰和山谷
    【POJ2449】第k短路
    【HAOI2008】移动玩具
    【洛谷P1379】八数码难题
    【NOIP2002】字串变换
    【CH2501】矩阵距离
    【CH2601】电路维修
    【NOIP2009】靶形数独
    树的子结构
  • 原文地址:https://www.cnblogs.com/2018/p/3482263.html
Copyright © 2011-2022 走看看