编译tcprstat

在RHEL6.1(Red Hat Enterprise Linux Server)上静态编译并不容易。tcprstat编译也有这个问题。

源码下载:tcprstat@Launchpad 命令:bzr branch lp:tcprstat

编译命令:./bootstrap && ./configure && make

如果顺利的话,就结束了。不过在我的发行版会报如下错误:

gcc -Wall -Werror -g -pthread -I../libpcap/libpcap-1.1.1/ -g -O2 -static -L../libpcap/libpcap-1.1.1/ \
-o tcprstat-static tcprstat_static-tcprstat.o tcprstat_static-functions.o tcprstat_static-capture.o \
tcprstat_static-process-packet.o tcprstat_static-local-addresses.o tcprstat_static-stats.o \
tcprstat_static-output.o tcprstat_static-stats-hash.o -lpthread -lpcap -L/usr/lib64/
ld: cannot find -lpthread
collect2: ld returned 1 exit status

经张新铭同学指点,发现在尝试静态编译时(-static),找不到pthread的链接库。pthread在Linux的glibc库中实现(NPTL),所以需要静态编译链接,则需要对应的glibc静态链接库。

查询这台机器对应的glibc版本为glibc-2.12-1.25.el6.x86_64(rpm -qa|grep glibc),那么也需要对应版本的静态链接库,在网上搜索对应的rpm包,并安装:

glibc-static-2.12-1.25.el6.x86_64.rpm
rpm -ivh glibc-static-2.12-1.25.el6.x86_64.rpm

问题解决。编译好的文件再src目录下:tcprstat tcprstat-static

在RHEL上静态链接库缺失导致编译失败的问题很常见,故记录之。

In:

6 responses to “编译tcprstat”

  1. georgexsh

    不会是rpmfind随便down一个吧
    rh官方仓库没有么

  2. admin

    是的!!! 是不是很残酷?

  3. 黑枸杞苗http://www.heigouqi.cn,QQ171565-8817,您好,能友情链接吗

  4. […] By orczhou […]

Leave a Reply

Your email address will not be published. Required fields are marked *