V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zro
V2EX  ›  问与答

编译 Linux 内核出错=。=

  •  
  •   zro · 2015-08-21 00:32:17 +08:00 · 2129 次点击
    这是一个创建于 3386 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在编译 MT7620 有关内核的时候,按默认设置编译都没什么问题,然后在menuconfig里编译多个包就出错了,换了好多关键字 Google 都没啥,只好发帖求大侠指点下迷津。。。谢谢 XD

    CHK include/linux/version.h
    CHK include/generated/utsrelease.h
    CALL scripts/checksyscalls.sh
    CHK include/generated/compile.h
    CC net/bridge/br_netfilter.o
    net/bridge/br_netfilter.c: In function 'br_nf_pre_routing_finish_bridge':
    net/bridge/br_netfilter.c:287: error: too few arguments to function
    make[4]: *** [net/bridge/br_netfilter.o] Error 1
    make[3]: *** [net/bridge] Error 2
    make[2]: *** [net] Error 2
    make[2]: Leaving directory '/home/XXXX/mt7620/linux-2.6.36.x'
    make[1]: *** [linux] Error 1
    make[1]: *** Leaving directory '/home/XXXX/mt7620'
    make: *** [kernel] Error 2

    编译的包是在:
    [*] Networking support --->
    Networking options --->
    [*] Network packet filtering framework (Netfilter ) --->
    [*] Advanced netfilter configuration
    [*] Bridged IP/ARP packets filtering

    问题应该就出在 net/bridge/br_netfilter.c ,不知是哪的原因生成不了 br_netfilter.o 文件,不编译 Bridged IP/ARP packets filtering 这项就一路顺畅~~~=. =

    PS:爛移動寬帶,點了“發佈主題”,網頁顯示“頁面載入出錯”, V2EX 連接不上了,艹
    HTTPS 也一樣。

    第 1 条附言  ·  2015-08-21 01:11:58 +08:00

    line 280: } else if (dst ->neighbour ) {
    line 281: /* the neighbour function below overwrites the complete
    line 282: * MAC header, so we save the Ethernet source address and
    line 283: protocol numer. */
    line 284: skb_copy_from_linear_data_offset (skb, -(ETH_HLEN-ETH_ALEN ), SKB->nf_bridge->data, ETH_HLEN-ETH_ALEN );
    line 285: /* tell br_dev_xmit to continue with forwarding */
    line 286: nf_bridge->mask |= BRNF_BRIDGED_DNAT;
    line 287: return dst -> neighbour -> output (skb );
    line 288: }

    第 2 条附言  ·  2015-08-21 01:53:30 +08:00

    br_netfilter.c 文件下载链接 -->Hit Me<--

    在此谢谢“咪那”

    12 条回复    2015-08-21 19:22:10 +08:00
    Andiry
        1
    Andiry  
       2015-08-21 00:38:34 +08:00 via Android
    原因不是很清楚么,连问题出在哪一行都告诉你了
    zro
        2
    zro  
    OP
       2015-08-21 01:02:13 +08:00
    @Andiry 谢谢回复,那地方有看,但没看出有什么问题,原谅我是 linux 小白:)
    部分源码如下:
    line 280: `} else if (dst ->neighbour ) {`
    line 281: `/* the neighbour function below overwrites the complete`
    line 282: `* MAC header, so we save the Ethernet source address and`
    line 283: `protocol numer. */`
    line 284: `skb_copy_from_linear_data_offset (skb, -(ETH_HLEN-ETH_ALEN ), SKB->nf_bridge->data, ETH_HLEN-ETH_ALEN );`
    line 285: `/* tell br_dev_xmit to continue with forwarding */`
    line 286: `nf_bridge->mask |= BRNF_BRIDGED_DNAT;`
    line 287: `return dst -> neighbour -> output (skb );`

    源码一点没改动过,是不是要打什么 PATCH 之类的?囧 rz
    zro
        3
    zro  
    OP
       2015-08-21 01:06:11 +08:00
    line 288: }
    请忽略楼上的`符号,以为”回复“这里也可以直接用 markdown 的语法
    HentaiMew
        4
    HentaiMew  
       2015-08-21 01:43:07 +08:00
    什么编译器?
    zro
        5
    zro  
    OP
       2015-08-21 01:58:16 +08:00
    @HentaiMew 是说这个吗 -->"/opt/buildroot-gcc342/"??
    Andiry
        6
    Andiry  
       2015-08-21 02:06:31 +08:00
    @zro 很显然 dst -> neighbour -> output (skb ) 这一句的 output 原型与这里的调用不符。实际的 output 函数不止接受一个 skb 参数。至于 output 具体是指向什么函数这里看不出来。

    我看了一下最新的 kernel 没有 br_netfilter.c ,所以你需要自己去看这里 output 指向什么函数。
    zro
        7
    zro  
    OP
       2015-08-21 02:14:07 +08:00
    @Andiry 非常感谢~该文件下载地址: http://1000eb.com/1fjm5
    对编程语言不太懂呢,根本不明白上面是什么意思:(
    Andiry
        8
    Andiry  
       2015-08-21 03:57:53 +08:00   ❤️ 1
    @zro 你发的文件被公司防火墙拦掉了。我搜了一下,应该改成
    return dst -> neighbour -> output (dst -> neighbour , skb );
    adrianzhang
        9
    adrianzhang  
       2015-08-21 09:19:10 +08:00
    编译选项里看看有关网桥的部分,可能有些东西没打勾,或者多打了勾而本地没有。
    invite
        10
    invite  
       2015-08-21 10:02:01 +08:00
    我就进来学习一下。
    kiritoalex
        11
    kiritoalex  
       2015-08-21 18:38:45 +08:00 via Android
    是不是依赖没弄好,我说的是 Linux 内核选项,你用 /搜一下看看
    zro
        12
    zro  
    OP
       2015-08-21 19:22:10 +08:00
    @kiritoalex @adrianzhang 按 8 楼 @Andiry 的方法修改可以编译了,虽然有几处 warning ,不过还是非常感谢 XD
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3382 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:45 · PVG 19:45 · LAX 03:45 · JFK 06:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.