debian RT-AC68U 交叉编译链 编译 ChinaDNS 失败 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xzm1006
V2EX    问与答

debian RT-AC68U 交叉编译链 编译 ChinaDNS 失败

  •  
  •   xzm1006 2015-02-28 22:43:22 +08:00 6634 次点击
    这是一个创建于 3948 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我git clone完后使用./autogen.sh && CC=arm-uclibc-linux-2.6.36-gcc CXX=arm-uclibc-linux-2.6.36-g++ AR=arm-uclibc-linux-2.6.36-ar RANLIB=arm-uclibc-linux-2.6.36-ranlib ./configure --host=arm-uclibc-linux --enable-static && make进行编译

    结果报错如下:

    arm-uclibc-linux-2.6.36-gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT chinadns.o -MD -MP -MF .deps/chinadns.Tpo -c -o chinadns.o chinadns.c
    mv -f .deps/chinadns.Tpo .deps/chinadns.Po
    arm-uclibc-linux-2.6.36-gcc -g -O2 -static -o chinadns chinadns.o -lresolv
    chinadns.o: In function `hostname_from_question':
    /root/ChinaDNS/src/chinadns.c:727: undefined reference to `__ns_parserr'
    chinadns.o: In function `should_filter_query':
    /root/ChinaDNS/src/chinadns.c:767: undefined reference to `__ns_parserr'
    chinadns.o: In function `dns_handle_remote':
    /root/ChinaDNS/src/chinadns.c:655: undefined reference to `__ns_initparse'
    chinadns.o: In function `dns_handle_local':
    /root/ChinaDNS/src/chinadns.c:567: undefined reference to `__ns_initparse'

    请问应该如何解决?本来想@ /t/124550 76L的szpunk,但是他似乎很久没上了
    30 条回复    2015-10-02 21:07:23 +08:00
    XiaoxiaoPu
        1
    XiaoxiaoPu  
       2015-02-28 23:09:24 +08:00   1
    正确的交叉编译配置应该是 ./configure --host=arm-uclibc-linux-2.6.36 --enable-static,
    不要再指定 CC=... 之类的。错误原因似乎是没有找到 libresolv,你应该把 configure 的 log 贴出来。

    给个临时解决方案(不一定可行):
    cd src
    arm-uclibc-linux-2.6.36-gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT chinadns.o -MD -MP -MF .deps/chinadns.Tpo -c -o chinadns.o chinadns.c -lresolv
    xzm1006
        2
    xzm1006  
    OP
       2015-02-28 23:42:48 +08:00
    @XiaoxiaoPu 谢谢你给出临时解决方案,我运行后不报错了,但是我不知道下一步应该做什么,请原谅我编译小白
    因为我按照教程用该交叉编译配置成功编译了ss,并且放入路由器可运行,你的交叉编译配置之前已试过,成功生成了文件,但出现报错如下:
    chinadns.o: In function `resolve_dns_servers':
    /root/ChinaDNS/src/chinadns.c:326: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

    放入路由器运行出现报错如下:
    RT-AC68U-D9F8:/jffs# ./chinadns -m -c chnroute.txt
    ./chinadns: line 6: syntax error: unexpected word (expecting ")")
    RT-AC68U-D9F8:/jffs# ./chinadns: line 1:ELF : not found
    LazyZhu
        3
    LazyZhu  
       2015-03-01 00:50:01 +08:00   1
    XiaoxiaoPu
        4
    XiaoxiaoPu  
       2015-03-01 01:18:48 +08:00   1
    有问题的原因主要就是 chinadns 用到了 libresolv,可能你的交叉工具链里没有 libresolv 的静态版本,你试试把 --enable-static 去掉。或者试试这个内嵌了 libresolv 的版本: https://github.com/XiaoxiaoPu/ChinaDNS
    yushiro
        5
    yushiro  
       2015-03-01 14:29:12 +08:00 via iPhone
    lz,你是按照哪篇教程交叉编译SS的?我也是Ac68U,正需要~
    xzm1006
        6
    xzm1006  
    OP
       2015-03-01 17:06:26 +08:00
    @LazyZhu 感谢~试了能运行~话说18KB这么小……我以为路由器只能静态编译运行
    xzm1006
        7
    xzm1006  
    OP
       2015-03-01 17:09:26 +08:00
    @XiaoxiaoPu 试了编译你修改的版本,编译出来了!的确是缺少了libresolv,万分感谢!
    xzm1006
        8
    xzm1006  
    OP
       2015-03-01 17:11:05 +08:00
    @yushiro 教程可以参考/t/165064
    xzm1006
        9
    xzm1006  
    OP
       2015-03-02 11:09:12 +08:00
    @LazyZhu 能请教你是用什么交叉工具链编译的吗?发现我之前编译的ss-tunnel,放在路由器运行出现Segmentation fault错误……抓狂了
    kdrx
        10
    kdrx  
       2015-04-12 02:43:54 +08:00
    kdrx
        11
    kdrx  
       2015-04-12 02:45:30 +08:00
    @XiaoxiaoPu
    请问,你的内嵌libresolv的版本的chinadns能再次分享吗?
    @LazyZhu
    请问您是如果动态编译这个18k的chinadns的呢?能分享下吗?
    XiaoxiaoPu
        12
    XiaoxiaoPu  
       2015-04-13 10:17:07 +08:00
    @kdrx 动态链接能运行就没必要静态链接了
    kdrx
        13
    kdrx  
       2015-04-13 13:23:57 +08:00
    @XiaoxiaoPu
    我不是需要静态链接啊,静态连接后能运行的,但是体积太大。
    我是需要你这种内嵌libresolv的版本的动态链接编译。
    我官方源码用 arm-linux-gcc 交叉编译动态链接后,目标机器ac68u提示缺少libresolv.so
    而lazyzhu的动态链接版本能在asus 68u 正确运行,而我用ldd观察,发现他根本就没有链接libresolv.so库,可能也是源码中嵌入了libresolv中的相应函数。
    XiaoxiaoPu
        14
    XiaoxiaoPu  
       2015-04-13 14:03:50 +08:00
    @kdrx 代码不在工作的电脑里,晚上给你
    kdrx
        15
    kdrx  
       2015-04-13 23:38:34 +08:00
    @XiaoxiaoPu 好的,谢谢你!发我邮箱吧: [email protected]
    qq674949301
        16
    qq674949301  
       2015-09-05 13:06:05 +08:00
    @kdrx @LazyZhu @XiaoxiaoPu 您好!我交叉编译也遇到一些错误!是编译 tomato mips 平台的
    参考: https://github.com/shadowsocks/ChinaDNS

    交叉编译 ChinaDNS 出现以下错误:

    make[1]: 正在进入目录 `/home/houzi/ChinaDNS'
    Making all in src
    make[2]: 正在进入目录 `/home/houzi/ChinaDNS/src'
    mipsel-linux-gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT local_ns_parser.o -MD -MP -MF .deps/local_ns_parser.Tpo -c -o local_ns_parser.o local_ns_parser.c
    local_ns_parser.c: In function `local_ns_parserr':
    local_ns_parser.c:92: structure has no member named `_msg_ptr'
    local_ns_parser.c:97: structure has no member named `_msg_ptr'
    local_ns_parser.c:103: structure has no member named `_msg_ptr'
    local_ns_parser.c:106: structure has no member named `_msg_ptr'
    local_ns_parser.c:107: structure has no member named `_msg_ptr'
    local_ns_parser.c:111: structure has no member named `_msg_ptr'
    local_ns_parser.c:111: structure has no member named `_msg_ptr'
    local_ns_parser.c:112: structure has no member named `_msg_ptr'
    local_ns_parser.c:112: structure has no member named `_msg_ptr'
    local_ns_parser.c:118: structure has no member named `_msg_ptr'
    local_ns_parser.c:122: structure has no member named `_msg_ptr'
    local_ns_parser.c:122: structure has no member named `_msg_ptr'
    local_ns_parser.c:123: structure has no member named `_msg_ptr'
    local_ns_parser.c:123: structure has no member named `_msg_ptr'
    local_ns_parser.c:124: structure has no member named `_msg_ptr'
    local_ns_parser.c:128: structure has no member named `_msg_ptr'
    local_ns_parser.c:129: structure has no member named `_msg_ptr'
    local_ns_parser.c: In function `local_ns_setsection':
    local_ns_parser.c:141: structure has no member named `_msg_ptr'
    local_ns_parser.c:144: structure has no member named `_msg_ptr'
    make[2]: *** [local_ns_parser.o] 错误 1
    make[2]:正在离开目录 `/home/houzi/ChinaDNS/src'
    make[1]: *** [all-recursive] 错误 1
    make[1]:正在离开目录 `/home/houzi/ChinaDNS'
    make: *** [all] 错误 2
    qq674949301
        18
    qq674949301  
       2015-09-05 13:13:58 +08:00
    @LazyZhu 好的! brcm 53xx 的不是 ARM 平台的?
    qq674949301
        19
    qq674949301  
       2015-09-05 13:15:59 +08:00
    @LazyZhu 我的是 BRCM 4706,应该属于 BCM 47XX 的吧?
    qq674949301
        20
    qq674949301  
       2015-09-05 13:28:56 +08:00
    @还有 OpenWrt SDK 编译的放在 tomato 能运行吗?
    qq674949301
        21
    qq674949301  
       2015-09-30 18:28:15 +08:00
    @kdrx 请问您静态编译是参照哪个 wiki 的,能否给一下编译参数!我编译的成功但是运行报错!
    kdrx
        22
    kdrx  
       2015-10-01 02:39:56 +08:00
    我的目标机器是 asus ac68u, 如果不装 entware-arm ,默认没有 libresolv 动态库,按照 XiaoxiaoPu 修改的代码内嵌 libresolv 静态编译后,没有 libresolv 也一样运行,大小只有 22k 左右。
    tomato 我不太清楚是不是也因为没有这个库导致不能运行。
    kdrx
        23
    kdrx  
       2015-10-01 02:57:39 +08:00
    kdrx
        24
    kdrx  
       2015-10-01 02:59:00 +08:00
    @qq674949301
    编译好的不依赖 libresolv.so 的 chinadns , arm 平台可用。
    链接: http://pan.baidu.com/s/1c0jVVd2 密码: 92yh
    qq674949301
        25
    qq674949301  
       2015-10-01 11:14:19 +08:00
    @kdrx 谢谢啊!我可以用 OP 的 SDK 就可以动态编译 1.3.2 ,您之前编译那个静态版本的参数能否提供一下,我按照 chinadns 提供的静态编译 ARM 下不能成功运行,提示 chinadns: line 1: syntax error: unexpected word (expecting ")") ,然而 mips 按照次编译完全没有问题!所以您能否提供一下你之前静态编译的编译参数!
    qq674949301
        26
    qq674949301  
       2015-10-01 15:35:06 +08:00
    @kdrx 还有 1.3.2 有时候会出现不能解析一些需要 FQ 的 IP 的情况!
    kdrx
        27
    kdrx  
       2015-10-02 01:17:54 +08:00
    @qq674949301
    sorry ,时间太久了,我搞错了,我也是动态编译的,只是把 libresolv 相关代码内嵌,去除对这个动态库的依赖。编译方法完全等同于 github 主页上的方法。
    kdrx
        28
    kdrx  
       2015-10-02 01:19:51 +08:00
    @kdrx
    另外你如果要静态编译,我试过小米的交叉编译工具可以静态编译通过,按照主页对于 tomato 平台静态编译的参数编译即可。
    qq674949301
        29
    qq674949301  
       2015-10-02 12:43:27 +08:00
    @kdrx 非常感谢,我先去试试!
    qq674949301
        30
    qq674949301  
       2015-10-02 21:07:23 +08:00
    @kdrx 非常感谢!编译出来可以正常运行,不知道你能否提供一份内嵌 libresolv 动态库 chinadns 1.3.1 源码给我! [email protected]
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     858 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 20:11 PVG 04:11 LAX 12:11 JFK 15:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86