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 |
2
xzm1006 OP @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 |
3
LazyZhu 2015-03-01 00:50:01 +08:00 1
|
4
XiaoxiaoPu 2015-03-01 01:18:48 +08:00 1
有问题的原因主要就是 chinadns 用到了 libresolv,可能你的交叉工具链里没有 libresolv 的静态版本,你试试把 --enable-static 去掉。或者试试这个内嵌了 libresolv 的版本: https://github.com/XiaoxiaoPu/ChinaDNS
|
5
yushiro 2015-03-01 14:29:12 +08:00 via iPhone
lz,你是按照哪篇教程交叉编译SS的?我也是Ac68U,正需要~
|
7
xzm1006 OP @XiaoxiaoPu 试了编译你修改的版本,编译出来了!的确是缺少了libresolv,万分感谢!
|
9
xzm1006 OP @LazyZhu 能请教你是用什么交叉工具链编译的吗?发现我之前编译的ss-tunnel,放在路由器运行出现Segmentation fault错误……抓狂了
|
10
kdrx 2015-04-12 02:43:54 +08:00
|
11
kdrx 2015-04-12 02:45:30 +08:00
|
12
XiaoxiaoPu 2015-04-13 10:17:07 +08:00
@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中的相应函数。 |
14
XiaoxiaoPu 2015-04-13 14:03:50 +08:00
@kdrx 代码不在工作的电脑里,晚上给你
|
15
kdrx 2015-04-13 23:38:34 +08:00
@XiaoxiaoPu 好的,谢谢你!发我邮箱吧: [email protected]
|
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 |
17
LazyZhu 2015-09-05 13:10:33 +08:00
|
18
qq674949301 2015-09-05 13:13:58 +08:00
@LazyZhu 好的! brcm 53xx 的不是 ARM 平台的?
|
19
qq674949301 2015-09-05 13:15:59 +08:00
@LazyZhu 我的是 BRCM 4706,应该属于 BCM 47XX 的吧?
|
20
qq674949301 2015-09-05 13:28:56 +08:00
@还有 OpenWrt SDK 编译的放在 tomato 能运行吗?
|
21
qq674949301 2015-09-30 18:28:15 +08:00
@kdrx 请问您静态编译是参照哪个 wiki 的,能否给一下编译参数!我编译的成功但是运行报错!
|
22
kdrx 2015-10-01 02:39:56 +08:00
我的目标机器是 asus ac68u, 如果不装 entware-arm ,默认没有 libresolv 动态库,按照 XiaoxiaoPu 修改的代码内嵌 libresolv 静态编译后,没有 libresolv 也一样运行,大小只有 22k 左右。
tomato 我不太清楚是不是也因为没有这个库导致不能运行。 |
23
kdrx 2015-10-01 02:57:39 +08:00
|
24
kdrx 2015-10-01 02:59:00 +08:00
@qq674949301
编译好的不依赖 libresolv.so 的 chinadns , arm 平台可用。 链接: http://pan.baidu.com/s/1c0jVVd2 密码: 92yh |
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 按照次编译完全没有问题!所以您能否提供一下你之前静态编译的编译参数!
|
26
qq674949301 2015-10-01 15:35:06 +08:00
@kdrx 还有 1.3.2 有时候会出现不能解析一些需要 FQ 的 IP 的情况!
|
27
kdrx 2015-10-02 01:17:54 +08:00
@qq674949301
sorry ,时间太久了,我搞错了,我也是动态编译的,只是把 libresolv 相关代码内嵌,去除对这个动态库的依赖。编译方法完全等同于 github 主页上的方法。 |
28
kdrx 2015-10-02 01:19:51 +08:00
@kdrx
另外你如果要静态编译,我试过小米的交叉编译工具可以静态编译通过,按照主页对于 tomato 平台静态编译的参数编译即可。 |
29
qq674949301 2015-10-02 12:43:27 +08:00
@kdrx 非常感谢,我先去试试!
|
30
qq674949301 2015-10-02 21:07:23 +08:00
@kdrx 非常感谢!编译出来可以正常运行,不知道你能否提供一份内嵌 libresolv 动态库 chinadns 1.3.1 源码给我! [email protected]
|