larbin 安装笔记

来源:互联网 发布:win8映射网络驱动器 编辑:程序博客网 时间:2024/05/16 16:06

转自http://www.cnblogs.com/ylan2009/articles/2404238.html

里面提到的问题我全都遇到了,做个标记收藏了 哈哈。



Larbin编译步骤:

    编译前准备:(红色是要替换的为你自己的)

     1.确认是否已经安装了build-essential程序包:
            : sudo apt-get install build-essential

2. 确认是否已经安装了内核头文件包:
:uname –r  //查看内核名

<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><?xml:namespace prefix = st1 /><?xml:namespace prefix = st1 /><?xml:namespace prefix = st1 />2.6.32-25-generic //我的显示结果

:sudo apt-get install linux-headers-'2.6.32-25-generic '

   这里你要在单引号中换为你的内核名

3. 看一下gcc版本是否相匹配

:cat /proc/version

 Linux version 2.6.32-25-generic (buildd@rothera) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #44-Ubuntu SMP Fri Sep 17 20:26:08 UTC 2010

:/usr/bin/gcc 

 /usr/bin/gcc-4.4 /usr/bin/gccmakedep

可以看到,我的核心是用gcc version 4.4.3编译的, 已有了/usr/bin/gcc-4.4我这里可以。不相符要装内核。

:apt-get install gcc-4.4

 

开始编译:

    1. tar zxvf larbin-2.6.3.tar.gz

       2. ./configure //或许会有如下错误:

make[2]: Entering directory `/home/ifeitian/larbin-2.6.3/src/utils'

makedepend -f- -I.. -Y *.cc 2> /dev/null > .depend

make[2]: *** [dep-in] Error 127

make[2]: Leaving directory `/home/ ifeitian/larbin-2.6.3/src/utils'

make[2]: Entering directory `/home/ ifeitian/larbin-2.6.3/src/interf'

makedepend -f- -I.. -Y *.cc 2> /dev/null > .depend

make[2]: *** [dep-in] Error 127

make[2]: Leaving directory `/home/ ifeitian/larbin-2.6.3/src/interf'

make[2]: Entering directory `/home/ ifeitian/larbin-2.6.3/src/fetch'

makedepend -f- -I.. -Y *.cc 2> /dev/null > .depend

make[2]: *** [dep-in] Error 127

make[2]: Leaving directory `/home/ ifeitian/larbin-2.6.3/src/fetch'

make[1]: *** [dep] Error 2

make[1]: Leaving directory `/home/ ifeitian/larbin-2.6.3/src'

make: *** [dep] Error 2 

这是makedepend命令的问题,没有安装。

:sudo apt-get install xutils-dev //安装 

3. make

         这时会出现如下错误:

              parse.c: In function ‘vbuf__append_quoted1035’:

parse.c:138: warning: pointer targets in passing argument 2 of ‘adns__vbuf_append’ differ in signedness

internal.h:331: note: expected ‘const byte *’ but argument is of type ‘char *’

parse.c:155: warning: pointer targets in passing argument 2 of ‘adns__vbuf_append’ differ in signedness

internal.h:331: note: expected ‘const byte *’ but argument is of type ‘char *’

make[1]: *** [parse.o]错误1

make[1]:正在离开目录`/home/ifeitian/larbin-2.6.3/adns'

make: *** [all]错误2

这里由于/larbin-2.6.3/adns下internal.h中第568—571行代码引起的。其中一个参数类型错误。

修改方法有两种如下:

1.可以直接将这几行代码注释掉。即将这几行第一的函数体注释掉。

2.修改其中的参数类型

adns文件夹下internal.h文件569-571

adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu,

         vbuf *vb, parsedomain_flags flags,

          const byte *dgram, int dglen, int *cbyte_io, int max); 

修改为:

adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu,

         vbuf *vb, adns_queryflags flags,

          const byte *dgram, int dglen, int *cbyte_io, int max);即可。

继续make:make

  这是有可能会出现如下错误:

           make[1]:正在进入目录`/home/ifeitian/larbin-2.6.3/src' 

for d in utils interf fetch; do (cd $d; make all); done

make[2]:正在进入目录`/home/ifeitian/larbin-2.6.3/src/utils'

make[2]: ***没有规则可以创建“string.o”需要的目标“../iostream.h”。停止。

make[2]:正在离开目录`/home/ifeitian/larbin-2.6.3/src/utils'

make[2]:正在进入目录`/home/ifeitian/larbin-2.6.3/src/interf'

make[2]: ***没有规则可以创建“input.o”需要的目标“../iostream.h”。停止。

make[2]:正在离开目录`/home/ifeitian/larbin-2.6.3/src/interf'

make[2]:正在进入目录`/home/ifeitian/larbin-2.6.3/src/fetch'

g++ -Wno-deprecated -Wall -O3 -D_REENTRANT -I- -I.. -Ihttp://www.cnblogs.com/adns   -c -o sequencer.o sequencer.cc

cc1plus: note: obsolete option -I- used, please use -iquote instead

sequencer.cc:5:22: error: iostream.h:没有那个文件或目录

make[2]: *** [sequencer.o]错误1

make[2]:正在离开目录`/home/ifeitian/larbin-2.6.3/src/fetch'

make[1]: *** [subdirs-all]错误2

make[1]:正在离开目录`/home/ifeitian/larbin-2.6.3/src'

make: *** [all]错误2

        这是由于在一些原文件中使用了include<iostream.h>在编译过程中没有发现。是C++及C编译中的问题。可以如下更改:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.   将所有有错误的文件中的include<iostream.h>改为include<iostream>

并加上using namespace std; C++的形式嘛。不过这种该法相当费劲的。需要改很多个文件太麻烦了。

          2.这个方法不错很简单易懂

                 到/usr/include/c++/下CP一份iostream文件到larbin的src目录下。并将其的名改为iostream.h.打开此文件添加一句using namespace std;

             这就OK了。

 

  继续make吧。会OK了。

 

4.运行

     1.运行:./larbin

2.中止:Ctrl+C

3.重起:./larbin –scratch

5.  配置



修改了options.h 后再make又遇到了新问题

../fetch/file.h:105:24: error: extra qualification ‘html::’ on member ‘getLinks’
site.cc: In member function ‘void NamedSite::dnsOK()’:

用下面的方法解决的

http://blog.csdn.net/s030702614/article/details/5383615


./src/fetch/file.h中的第105行  inline Vector<char> *html::getLinks () { return &links; }改为inline Vector<char> *getLinks () { return &links; }