支持HW团队,就支付宝领取下面的红包吧!(2018年3月31前,就几毛,也会几块,可以和其他红包叠加使用),你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

小伙伴们,给大家发红包喽!人人可领,领完就能用。祝大家领取的红包金额大大大!#吱口令#长按复制此消息,打开支付宝就能领取!er1OEj73Uj

登入 注册 | 验证
| 搜索
HelloWorld论坛 : > 计算机科学、技术、教学> 电脑应用> linux系统> [转]ubuntu下安装Boost库、LOKI库、log4xx库
 
 
 
 
类别:其他 阅读:4710 评论:0 时间:三月 19, 2012, 6:24 a.m. 关键字:

 

 ubuntu下安装Boost库、LOKI库、log4xx库 - 音乐虫子的日志 - 网易博客

ubuntu下安装Boost库、LOKI库、log4xx库

Linux   2008-12-05 10:11   阅读286   评论1  
字号:       

         最近把自己的工作平台都迁到ubuntu上了,所以要把环境搭起来,首先要安装的是Boost库。 Boost库可以说是STL里非常好用的一个库。
        1、获得Boost库
             直接在命令行中输入:apt-get install libboost-dev libboost-dbg libboost-doc bcp libboost-*,但可能得不到,也可以到Boost的主页上(http://www.boost.org/users/download/)自己下载安装包。下载可能用到SVN客户端,执行语句:
sudo apt-get install subversion。SVN客户端就安装好了,我们就可以checkout最新的版本了:
svn co http://svn.boost.org/svn/boost/trunk boost-trunk。
        2、安装GCC、G++编译器
                 执行:sudo apt-get install build-essential
        3、安装依赖库
             需要先安装zlib, bzlib, python2.5-dev。
            1)安装python2.5-dev,
                   执行:sudo apt-get install python2.5-dev就行了
                   
                   也可以下载安装包.tar.gz2,安装时看README,注意安装的目录位置,
                    在安装boost时编译configure里加上PYTHON_LIB_PATH=/usr/local/lib/python2.5
PYTHON_INCLUDES=/usr/local/include/python2.5两个参数
            2)安装zlib
                   wget http://www.zlib.net/zlib-1.2.3.tar.gz
                   ./configure
                    make
                    make install
             3)安装bzlib
                    wget http://www.bzip.org/1.0.5/bzip2-1.0.5.tar.gz
                    make
                    make install
          4、安装boost
                    sudo -i  //改为超级用户
                    cd boost_1_38/tools/jam/src
                    ./build.sh
                    cd bin.linuxx86
                    export PATH=$PATH:/home/qiuzhiguang/boost_1_38/tools/jam/src/bin.linuxx86 //把bjam程序所在目录设为搜索目录
                    cd boost_1_38
                    bjam install
                    cd /usr/local/include/boost_1_38
                    mv boost ./../
                    将 /usr/local/lib 以及 /usr/local/lib64 两个路径添加到 /etc/ld.so.conf 末尾
                    /sbin/ ldconfig
            5、测试boost库
                  #include <iostream>
                  #include <boost/scoped_ptr.hpp>

                  int main(int argc,char **argv)
                  {
                       int pcr = 100;
                       boost::scoped_ptr <int> m_lastPCR;
                       m_lastPCR.reset(new int(pcr));
                       std::cout<<"boost: "<<*m_lastPCR<<std::endl;
                       return 0;
                  }

  接下来就可以安装loki库了。loki库主要用了里面的Singleton,单键模式,只生成一个对象。
         1.download loki-0.1.6.tar.gz from http://sourceforge.org/
         2.sudo -i
         3.tar xzf loki-0.1.6.tar.gz
         4.cd loki-0.1.6
         5.修改Makefile
               把有关test目录下的编译去掉
               因为这里面可能编译不过,但也没有什么用。
         6.make
         7.cd loki-0.1.6/include
         8.cp –r loki /usr/include
         9.cd loki-0.1.6/lib
        10.cp –r * /usr/lib

        11安装log4cxx
             1)安装libtool软件包
                    de>$sudo apt-get install libtool
        2)de>安装automake
                    de>$sudo apt-get install automake
        3)生成configure文件
           $./autogen.sh
        4)生成Makefile文件
           $./configure
        5)make && make install
de>        12测试3个库
#define LOKI_CLASS_LEVEL_THREADING//使得ClassLevelLockable生效
#include <loki/Singleton.h>
#include <log4cxx/logger.h>
#include <boost/scoped_ptr.hpp>
using namespace log4cxx;

class Speak
{
    public:
        Speak();
        void sayHello(const char *);
        void set(const int);
        int get();
    private:
        int count;
        log4cxx::LoggerPtr m_logger;
};
typedef Loki::SingletonHolder <Speak, Loki::CreateUsingNew, Loki::DefaultLifetime, Loki::ClassLevelLockable> SS;
Speak::Speak()
{
    m_logger = Logger::getLogger("qiuzhiguang");
}
void Speak::sayHello(const char *str)
{
    std::cout<<"Hello "<<str<<"\n";
}
void Speak::set(const int n)
{
    count = n;
}
int Speak::get()
{
    return count;
}

int main(int argc,char **argv)
{
    int pcr = 100;
    boost::scoped_ptr <int> m_lastPCR;
    SS::Instance().sayHello("world");
    m_lastPCR.reset(new int(pcr));
    std::cout<<"boost: "<<*m_lastPCR<<std::endl;
    return 0;
}
[挂载人]初学MPEG [审核人]初学MPEG 推荐

个人签名--------------------------------------------------------------------------------

Please Login (or Sign Up) to leave a comment