Skip to content

编译运行的常见问题

lilymoana edited this page Sep 2, 2017 · 8 revisions

Tendermint启动时出现的问题

c-dummy 正常启动后,执行 tendermind node,出现如下错误:

E[08-31|11:13:55.061] abci.socketClient failed to connect to tcp://127.0.0.1:46658.  Retrying... module=abci-client connection=query

这是由于 c-dummy 默认绑定的地址端口与 Tendermint 配置文件中的地址端口不一致,三种解决方法:

1.修改 Tendermint 的配置文件中的端口地址

打开配置文件 ~/.tendermint/config.toml

  vim ~/.tendermint/config.toml

将配置文件中 proxy_app 字段的值修改为 c-dummy 程序默认绑定的地址端口:127.0.0.0:46658:

  proxy_app = "tcp://127.0.0.1:46658"

保存退出配置文件,重新启动Tendermint程序:

  tendermint node

2.修改 c-dummy 程序中默认的绑定地址端口

首先查看 ~/.tendermint/config.toml 配置文件中 proxy_app 字段的值,假设值为:

proxy_app = "tcp://127.0.0.1:46677"

那么进入 c-abci/demo 目录中:

cd c-abci/demo

修改main.c文件中的一行代码,原代码为:

strcpy(port, "46658");

修改为:

strcpy(port, "46677");

保存退出,在demo目录下编译:

make

然后重新启动c-dummy和Tendermint程序即可

3.每次执行c-dummy程序时提供proxy_app字段中配置的IP地址端口参数

./c-dummy 127.0.0.1 46677

c-dummy启动时出现的问题

编译成功,但是启动c-dummy时报错:

error while loading shared libraries: libc-abci.so: cannot open shared object file: No such file or directory

这是由于动态连接库的配置文件中没有添加c-abci/lib的路径,将库的绝对路径添加到配置文件中:

sudo vim /etc/ld.so.conf.d/local.conf

输入用户密码,然后在此配置文件中添加两行数据,此文件如果不存在可以直接新建:

/home/lily/work/c-abci/lib
/home/lily/work/c-abci/type/protobuf-c

退出保存文件即可(注意,这里写的是我的绝对路径,每个人的绝对路径会不一致:/home/lily/work的部分不一样) 修改完配置文件之后,刷新动态库的配置:

sudo ldconfig

刷新完之后,重新启动c-dummy程序即可

编译时出现的问题

在make编译的时候报错:

/usr/bin/ld: cannot find -lc-abci
/usr/bin/ld: cannot find -lencoding
/usr/bin/ld: cannot find -lsocket
/usr/bin/ld: cannot find -ltypes
/usr/bin/ld: cannot find -ldlist

这个原因跟上面c-dummy启动产生的问题是一样的,所以解决方案也是一样,修改配置文件然后刷新:

sudo vim /etc/ld.so.conf.d/local.conf

输入用户密码,然后在此配置文件中添加两行数据:

/home/lily/work/c-abci/lib
/home/lily/work/c-abci/type/protobuf-c

退出保存文件即可(注意绝对路径)

修改完配置文件之后,刷新动态库的配置:

sudo ldconfig

刷新完成之后重新编译即可:在c-abci/目录下:

make