Archive for 8月 2012

静态库和共享库库的定位搜索路径

库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置添加到库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用:
在环境变量 LD_LIBRARY_PATH 中指明库的搜索路径。
在 /etc/ld.so.conf 文件中添加库的搜索路径。
将自己可能存放库文件的路径都加入到/etc/ld.so.conf中是明智的选择

Continue reading ‘静态库和共享库库的定位搜索路径’ »

C++ signal的使用

1. 头文件
#include <signal.h>
2. 功能
设置某一信号的对应动作
3. 函数原型
void (*signal(int signum,void(* handler)(int)))(int);
   分解来看:
   typedef void (*sig_t) (int);
sig_t signal(int sig, sig_t func);

第一个参数是目标信号。func参数是一个指针,指向某个处理该信号的函数。这个处理信号函数带有一个int型参数,并应返回void。
func参数也可以设定为下面的一些值:
   SIG_IGN: 如果func参数被设置为SIG_IGN,该信号将被忽略。
   SIG_DFL: 如果func参数被设置为SIG_DFL,该信号会按照确定行为处理。

记录一种删除容器最快办法

for (iterator iter = value.begin(); iter != value.end(); )
{
   if (xxx)
      value.erase(iter++);
   else
      iter++;
}

该方法不适用于vector,原因是官网有一句:

Because vectors use an array as their underlying storage, erasing elements in positions other than the vector endcauses the container to relocate all the elements after the segment erased to their new positions. This is generally an inefficient operation compared to the one performed for the same operation by other kinds of sequence containers (such as list or forward_list).

因此要用下面的方法:

for (iterator iter = value.begin(); iter != value.end(); )
{
   if (xxx)
      iter = value.erase(iter);
   else
      iter++;
}

我的初次养狗经历:一波三折

第一幕:

第一次养狗的经历真的可以让我刻骨铭心。现在想起来,当初选第一只狗狗的时候我们是有多菜鸟,被老板耍得团团转都不知道,老板明知道那只精神不好,不爱动,一直趴在那,非要我们挑那只回去,再加上我们第一只选狗根本没有什么选狗的经验,一味的可怜好看就行了。哎。。而且卖家有一个非常卑鄙的骗术,就是拿年龄小的狗充当年龄大的狗卖,因为年龄小体型小,就可以卖个好价钱,就可以玩具充当茶杯卖,迷你充当玩具卖。可恶的狗贩子。她卖给我们的据说是2个月多的茶杯贵宾犬,叫价3500,一分不少,后来才知道那狗狗根本没有2个月,牙齿都没长齐,估计才1个多月。最郁闷的是拿回家吃完晚饭就不幸去世了。哎,当时才知道自己是多么的无知跟无助,看着狗狗心跳一点点减弱,我简直后悔莫及。

Continue reading ‘我的初次养狗经历:一波三折’ »

centos手动安装gcc4.5

在CentOS(版本是4.8)进行了手动安装 gcc 4.5.0,在安装的过程中遇到不少问题,下面具体说一下我的安装过程。

首先在配置gcc的过程中会出现错误:gcc configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+

说明要安装gcc需要GMP、MPFR、MPC这三个库,可从ftp://gcc.gnu.org/pub/gcc/infrastructure/下载相应的压缩包。

由于MPFR依赖GMP,而MPC依赖GMP和MPFR,所以要先安装GMP,其次MPFR,最后才是MPC。

这里三个库我用的版本分别是gmp4.3.2,mpfr2.4.2和mpc0.8.1。

Continue reading ‘centos手动安装gcc4.5’ »