设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 81|回复: 10

mtr 增加IP解析功能,centos 编译总是报错

[复制链接]

46

主题

906

回帖

2092

积分

金牌会员

积分
2092
发表于 2020-6-6 22:45:45 | 显示全部楼层 |阅读模式
https://github.com/bilibili/mtr


git clone https://github.com/bilibili/mtr.git

yum install -y automake ncurses-devel json-c-devel libasan

cd mtr && rm -rf ipdb-c && git clone https://github.com/ipipdotnet/ipdb-c.git

./bootstrap.sh

./configure --without-gtk --disable-ipv6 --with-ipdotnet

make

到这报错:

make[1]: 进入目录“/root/mtr”
  CC       ui/mtr-mtr.o
  CC       ui/mtr-net.o
  CC       ui/mtr-cmdpipe.o
  CC       ui/mtr-dns.o
  CC       ui/mtr-raw.o
  CC       ui/mtr-split.o
  CC       ui/mtr-display.o
  CC       ui/mtr-report.o
  CC       ui/mtr-select.o
  CC       ui/mtr-utils.o
  CC       ui/mtr-asn.o
  CC       ui/mtr-curses.o
ui/curses.c: 在函数‘mtr_curses_hosts’中:
ui/curses.c:474:49: 警告:未使用的变量‘itype’ [-Wunused-variable]
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
                                                 ^
ui/curses.c:474:34: 警告:未使用的变量‘idistrict’ [-Wunused-variable]
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
                                  ^
ui/curses.c:473:51: 警告:未使用的变量‘type’ [-Wunused-variable]
     char *country,*province,*city,*district,*isp,*type,*desc;
                                                   ^
ui/curses.c:473:36: 警告:未使用的变量‘district’ [-Wunused-variable]
     char *country,*province,*city,*district,*isp,*type,*desc;
                                    ^
ui/curses.c: 在函数‘mtr_curses_redraw’中:
ui/curses.c:581:31: 警告:此函数中的‘idesc’在使用前可能未初始化 [-Wmaybe-uninitialized]
                     if (idesc > 0 && desc) {
                               ^
ui/curses.c:474:55: 附注:‘idesc’在此声明
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
                                                       ^
ui/curses.c:577:30: 警告:此函数中的‘iisp’在使用前可能未初始化 [-Wmaybe-uninitialized]
                     if (iisp > 0 && isp) {
                              ^
ui/curses.c:474:44: 附注:‘iisp’在此声明
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
                                            ^
ui/curses.c:568:35: 警告:此函数中的‘icity’在使用前可能未初始化 [-Wmaybe-uninitialized]
                         if (icity > 0 && city && (iprovince != icity || strncmp(province, city, icity) != 0)) {
                                   ^
ui/curses.c:474:28: 附注:‘icity’在此声明
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
                            ^
ui/curses.c:561:39: 警告:此函数中的‘iprovince’在使用前可能未初始化 [-Wmaybe-uninitialized]
                         if (iprovince > 0 && province) {
                                       ^
ui/curses.c:474:18: 附注:‘iprovince’在此声明
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
                  ^
ui/curses.c:550:51: 警告:此函数中的‘icountry’在使用前可能未初始化 [-Wmaybe-uninitialized]
                             biliip_last += sprintf(biliip_last, "%.*s", icountry, country);
                                                   ^
ui/curses.c:474:9: 附注:‘icountry’在此声明
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
         ^
ui/curses.c:581:35: 警告:此函数中的‘desc’在使用前可能未初始化 [-Wmaybe-uninitialized]
                     if (idesc > 0 && desc) {
                                   ^
ui/curses.c:473:57: 附注:‘desc’在此声明
     char *country,*province,*city,*district,*isp,*type,*desc;
                                                         ^
ui/curses.c:577:34: 警告:此函数中的‘isp’在使用前可能未初始化 [-Wmaybe-uninitialized]
                     if (iisp > 0 && isp) {
                                  ^
ui/curses.c:473:46: 附注:‘isp’在此声明
     char *country,*province,*city,*district,*isp,*type,*desc;
                                              ^
ui/curses.c:568:39: 警告:此函数中的‘city’在使用前可能未初始化 [-Wmaybe-uninitialized]
                         if (icity > 0 && city && (iprovince != icity || strncmp(province, city, icity) != 0)) {
                                       ^
ui/curses.c:473:30: 附注:‘city’在此声明
     char *country,*province,*city,*district,*isp,*type,*desc;
                              ^
ui/curses.c:561:43: 警告:此函数中的‘province’在使用前可能未初始化 [-Wmaybe-uninitialized]
                         if (iprovince > 0 && province) {
                                           ^
ui/curses.c:473:20: 附注:‘province’在此声明
     char *country,*province,*city,*district,*isp,*type,*desc;
                    ^
ui/curses.c:550:51: 警告:此函数中的‘country’在使用前可能未初始化 [-Wmaybe-uninitialized]
                             biliip_last += sprintf(biliip_last, "%.*s", icountry, country);
                                                   ^
ui/curses.c:473:11: 附注:‘country’在此声明
     char *country,*province,*city,*district,*isp,*type,*desc;
           ^
  CC       ipdb-c/mtr-ipdb.o
ipdb-c/ipdb.c: 在函数‘parse_meta_data’中:
ipdb-c/ipdb.c:40:5: 错误:只允许在 C99 模式下使用‘for’循环初始化声明
     for (int i = 0; i fields_length; ++i) {
     ^
ipdb-c/ipdb.c:40:5: 附注:使用 -std=c99 或 -std=gnu99 来编译您的代码
ipdb-c/ipdb.c:50:14: 错误:‘i’重定义
     for (int i = 0; i language_length; ++i) {
              ^
ipdb-c/ipdb.c:40:14: 附注:‘i’的上一个定义在此
     for (int i = 0; i fields_length; ++i) {
              ^
ipdb-c/ipdb.c:50:5: 错误:只允许在 C99 模式下使用‘for’循环初始化声明
     for (int i = 0; i language_length; ++i) {
     ^
ipdb-c/ipdb.c: 在函数‘ipdb_reader_new’中:
ipdb-c/ipdb.c:101:5: 错误:只允许在 C99 模式下使用‘for’循环初始化声明
     for (int i = 0; i meta->node_count; ++i) {
     ^
ipdb-c/ipdb.c: 在函数‘ipdb_reader_free’中:
ipdb-c/ipdb.c:117:9: 错误:只允许在 C99 模式下使用‘for’循环初始化声明
         for (int i = 0; i fields_length; ++i) {
         ^
ipdb-c/ipdb.c: 在函数‘ipdb_search’中:
ipdb-c/ipdb.c:164:5: 错误:只允许在 C99 模式下使用‘for’循环初始化声明
     for (int i = 0; i meta->language_length; ++i) {
     ^
make[1]: *** [ipdb-c/mtr-ipdb.o] 错误 1
make[1]: 离开目录“/root/mtr”
make: *** [all] 错误 2

这么好的工具,谁能解决下~




回复

使用道具 举报

78

主题

4656

回帖

9594

积分

论坛元老

积分
9594
发表于 2020-6-6 23:01:32 | 显示全部楼层
ip解析功能是啥
回复

使用道具 举报

282

主题

1679

回帖

4278

积分

论坛元老

积分
4278
发表于 2020-6-6 22:59:08 | 显示全部楼层
回复

使用道具 举报

46

主题

906

回帖

2092

积分

金牌会员

积分
2092
 楼主| 发表于 2020-6-6 23:03:49 | 显示全部楼层
bilibili有、意思
回复

使用道具 举报

2

主题

216

回帖

494

积分

中级会员

积分
494
发表于 2020-6-6 22:59:00 | 显示全部楼层
好多年前的吧
回复

使用道具 举报

12

主题

1250

回帖

2586

积分

金牌会员

积分
2586
发表于 2020-6-6 23:07:23 | 显示全部楼层
本帖最后由 moowee 于 2020-6-6 23:19 编辑

iks 发表于 2020-6-6 23:13

好多年前的吧


Commits on Apr 3, 2020

support for ipdb-c

MagicBear
MagicBear committed on 3 Apr


现在经常在更新,支持ipip.net解析
回复

使用道具 举报

46

主题

906

回帖

2092

积分

金牌会员

积分
2092
 楼主| 发表于 2020-6-6 23:13:21 | 显示全部楼层

moowee 发表于 2020-6-6 23:16

Commits on Apr 3, 2020

support for ipdb-c

接入 ipip.net 就很香

回复

使用道具 举报

12

主题

1250

回帖

2586

积分

金牌会员

积分
2586
发表于 2020-6-6 23:16:58 | 显示全部楼层

moowee 发表于 2020-6-6 23:03

这确实直观了好多喔
回复

使用道具 举报

282

主题

1679

回帖

4278

积分

论坛元老

积分
4278
发表于 2020-6-6 23:13:00 | 显示全部楼层

h20 发表于 2020-6-6 23:01

gcc版本太低  (换句话,别用centos)

gcc升级到gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3)

还是报错,报的少了一些

make  all-am
make[1]: 进入目录“/root/mtr”
  CC       ui/mtr-mtr.o
  CC       ui/mtr-net.o
  CC       ui/mtr-cmdpipe.o
  CC       ui/mtr-dns.o
  CC       ui/mtr-raw.o
  CC       ui/mtr-split.o
  CC       ui/mtr-display.o
  CC       ui/mtr-report.o
  CC       ui/mtr-select.o
  CC       ui/mtr-utils.o
  CC       ui/mtr-asn.o
  CC       ui/mtr-curses.o
ui/curses.c: In function ‘mtr_curses_hosts’:
ui/curses.c:474:49: warning: unused variable ‘itype’ [-Wunused-variable]
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
                                                 ^~~~~
ui/curses.c:474:34: warning: unused variable ‘idistrict’ [-Wunused-variable]
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
                                  ^~~~~~~~~
ui/curses.c:473:51: warning: unused variable ‘type’ [-Wunused-variable]
     char *country,*province,*city,*district,*isp,*type,*desc;
                                                   ^~~~
ui/curses.c:473:36: warning: unused variable ‘district’ [-Wunused-variable]
     char *country,*province,*city,*district,*isp,*type,*desc;
                                    ^~~~~~~~
ui/curses.c: In function ‘mtr_curses_redraw’:
ui/curses.c:581:31: warning: ‘idesc’ may be used uninitialized in this function [-Wmaybe-uninitialized]
                     if (idesc > 0 && desc) {
                         ~~~~~~^~~
ui/curses.c:474:55: note: ‘idesc’ was declared here
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
                                                       ^~~~~
ui/curses.c:577:30: warning: ‘iisp’ may be used uninitialized in this function [-Wmaybe-uninitialized]
                     if (iisp > 0 && isp) {
                         ~~~~~^~~
ui/curses.c:474:44: note: ‘iisp’ was declared here
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
                                            ^~~~
ui/curses.c:568:35: warning: ‘icity’ may be used uninitialized in this function [-Wmaybe-uninitialized]
                         if (icity > 0 && city && (iprovince != icity || strncmp(province, city, icity) != 0)) {
                             ~~~~~~^~~
ui/curses.c:474:28: note: ‘icity’ was declared here
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
                            ^~~~~
ui/curses.c:568:47: warning: ‘iprovince’ may be used uninitialized in this function [-Wmaybe-uninitialized]
                         if (icity > 0 && city && (iprovince != icity || strncmp(province, city, icity) != 0)) {
                             ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ui/curses.c:474:18: note: ‘iprovince’ was declared here
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
                  ^~~~~~~~~
ui/curses.c:549:38: warning: ‘icountry’ may be used uninitialized in this function [-Wmaybe-uninitialized]
                         if (icountry > 0 && country) {
                             ~~~~~~~~~^~~
ui/curses.c:474:9: note: ‘icountry’ was declared here
     int icountry,iprovince,icity,idistrict,iisp,itype,idesc;
         ^~~~~~~~
ui/curses.c:582:40: warning: ‘desc’ may be used uninitialized in this function [-Wmaybe-uninitialized]
                         biliip_last += sprintf(biliip_last, " %.*s", idesc, desc);
                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ui/curses.c:473:57: note: ‘desc’ was declared here
     char *country,*province,*city,*district,*isp,*type,*desc;
                                                         ^~~~
ui/curses.c:578:40: warning: ‘isp’ may be used uninitialized in this function [-Wmaybe-uninitialized]
                         biliip_last += sprintf(biliip_last, "%.*s", iisp, isp);
                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ui/curses.c:473:46: note: ‘isp’ was declared here
     char *country,*province,*city,*district,*isp,*type,*desc;
                                              ^~~
ui/curses.c:569:44: warning: ‘city’ may be used uninitialized in this function [-Wmaybe-uninitialized]
                             biliip_last += sprintf(biliip_last, " %.*s", icity, city);
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ui/curses.c:473:30: note: ‘city’ was declared here
     char *country,*province,*city,*district,*isp,*type,*desc;
                              ^~~~
ui/curses.c:562:44: warning: ‘province’ may be used uninitialized in this function [-Wmaybe-uninitialized]
                             biliip_last += sprintf(biliip_last, " %.*s", iprovince, province);
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ui/curses.c:473:20: note: ‘province’ was declared here
     char *country,*province,*city,*district,*isp,*type,*desc;
                    ^~~~~~~~
ui/curses.c:550:44: warning: ‘country’ may be used uninitialized in this function [-Wmaybe-uninitialized]
                             biliip_last += sprintf(biliip_last, "%.*s", icountry, country);
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ui/curses.c:473:11: note: ‘country’ was declared here
     char *country,*province,*city,*district,*isp,*type,*desc;
           ^~~~~~~
  CC       ipdb-c/mtr-ipdb.o
  CCLD     mtr
  CC       packet/packet.o
  CC       packet/cmdparse.o
  CC       packet/command.o
  CC       packet/probe.o
  CC       packet/timeval.o
  CC       packet/sockaddr.o
  CC       packet/construct_unix.o
  CC       packet/deconstruct_unix.o
  CC       packet/probe_unix.o
  CC       packet/wait_unix.o
  CCLD     mtr-packet
  GEN      mtr.8
  GEN      mtr-packet.8
make[1]: 离开目录“/root/mtr”

貌似编译过了

但是加上-R 运行的时候,提示错误:
[root@localhost mtr]# mtr -R www.bilibili.com
段错误
[39388.734311] main[25198]: segfault at 0 ip 0000000000401915 sp 00007ffd70a9bcc0 error 4 in main[400000+3000]
[39835.200414] main[27970]: segfault at 0 ip 0000000000401915 sp 00007ffdafbf6750 error 4 in main[400000+3000]
[55348.319251] sctp: Hash tables configured (bind 256/256)
[55371.689261] mtr[1733]: segfault at 28 ip 00007f7851ac4640 sp 00007ffcec7267a8 error 4 in libjson-c.so.2.0.1[7f7851ac0000+a000]
[55394.770983] mtr[1739]: segfault at 28 ip 00007f9c54962640 sp 00007ffe25264be8 error 4 in libjson-c.so.2.0.1[7f9c5495e000+a000]
[55659.577827] mtr[6495]: segfault at 28 ip 00007fbb4ff99640 sp 00007ffe408cb938 error 4 in libjson-c.so.2.0.1[7fbb4ff95000+a000]
[85842.478179] mtr[27107]: segfault at 28 ip 00007fe3e06d3640 sp 00007ffcb351d138 error 4 in libjson-c.so.2.0.1[7fe3e06cf000+a000]
回复

使用道具 举报

0

主题

10

回帖

38

积分

新手上路

积分
38
发表于 2020-6-6 23:22:17 | 显示全部楼层
https://www.ipip.net/product/client.html#besttrace
ipip 的 besttrace 就很好用呀?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2026-2-14 03:51 , Processed in 0.017380 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表