月度归档:2012年05月

Ubuntu下安装GoAccess过程中对源代码编译时产生错误的处理方法

Published / by 高成 / Leave a Comment

前几日在VPS上面重新安装了下GoAccess,以前博主为图省事直接用的apt-get install goaccess进行的安装,没有对源代码进行编译安装,在Ubuntu下编译的时候不能通过报出了两个错误,博主于是发邮件给GoAccess官方需求解决方法,很快得到的回复。对了GoAccess官方邮件地址是goaccess(at)prosoftcorp.com,有问题可以直接给他们发邮件,很快就会得到答复!
我安装的时候产生的错误是这样的

gcc -g -Wall -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include   -lmenuw -lncursesw -lm  -o goaccess settings.o error.o commons.o goaccess.o parser.o ui.o util.o  -lglib-2.0 -lmenuw -lncursesw 
ui.o: In function `create_graphs':
/usr/local/goaccess/ui.c:300: undefined reference to `log10'
/usr/local/goaccess/ui.c:300: undefined reference to `floor'
ui.o: In function `data_by_total_hits':
/usr/local/goaccess/ui.c:390: undefined reference to `log10'
/usr/local/goaccess/ui.c:390: undefined reference to `floor'
collect2: ld returned 1 exit status
make[1]: *** [goaccess] Error 1
make[1]: Leaving directory `/usr/local/goaccess'
make: *** [all] Error 2

官方的给出的解决办法是
首先安装autoconf,如果没有安装的话

apt-get install autoconf

打开Makefile.am文件查看是否有如下两行的内容,没有则进行添加

AM_CFLAGS = -g -Wall @GLIB2_CFLAGS@
goaccess_LDADD = -lm

修改configure.ac文件

vi configure.ac

注释掉AM_INIT_AUTOMAKE,然后执行以下命令

autoheader
autoconf

再次修改configure.ac文件

vi configure.ac

将AM_INIT_AUTOMAKE注释去掉,然后执行以下命令

aclocal
automake -a
autoconf

再次进行编译顺利通过,GoAccess官方建议用git获取源代码

git clone git://goaccess.git.sourceforge.net/gitroot/goaccess/goaccess

我也是通过这种方式获取的源代码进行修改之后编译安装顺利通过