You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译magi钱包时出现makefile.unix:188 obj/magirpc.o Error 1错误如何解决

问题

我在编译magi钱包时遇到了如下报错,在主流搜索引擎搜索均未找到解决方案,仅在项目的makefile中见过相关提及。对应项目仓库已近3年未更新,提交的issue无人回复,现寻求解决方案。

报错信息
magirpc.cpp: At global scope:
magirpc.cpp:668:102: error: wrong number of template arguments (2, should be 1)
static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,

magirpc.cpp:668:104: error: template argument 1 is invalid
static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,

magirpc.cpp:678:95: error: wrong number of template arguments (2, should be 1)
static void RPCListen(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,

magirpc.cpp:678:97: error: template argument 1 is invalid
static void RPCListen(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,

magirpc.cpp:683:91: error: base operand of ‘->’ is not a pointer
 AcceptedConnectionImpl<Protocol>* conn = new AcceptedConnectionImpl<Protocol>(acceptor->get_io_service(), context, fUseSSL);

magirpc.cpp:685:13: error: base operand of ‘->’ is not a pointer
 acceptor->async_accept(

magirpc.cpp:700:102: error: wrong number of template arguments (2, should be 1)
static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,

magirpc.cpp:700:104: error: template argument 1 is invalid
static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,

magirpc.cpp:710:17: error: base operand of ‘->’ is not a pointer
  && acceptor->is_open())

magirpc.cpp:711:45: error: no matching function for call to ‘RPCListen(int&, boost::asio::ssl::context&, const bool&)’
     RPCListen(acceptor, context, fUseSSL);

magirpc.cpp:775:58: error: no matching function for call to ‘boost::asio::ssl::context::context(boost::asio::io_service&, boost::asio::ssl::context_base::method)’
 ssl::context context(io_service, ssl::context::sslv23);

magirpc.cpp:791:41: error: ‘class boost::asio::ssl::context’ has no member named ‘impl’
     SSL_CTX_set_cipher_list(context.impl(), strCiphers.c_str());

magirpc.cpp:816:45: error: no matching function for call to ‘RPCListen(boost::shared_ptr<boost::asio::basic_socket_acceptor<boost::asio::ip::tcp> >&, boost::asio::ssl::context&, const bool&)’
     RPCListen(acceptor, context, fUseSSL);

magirpc.cpp:842:49: error: no matching function for call to ‘RPCListen(boost::shared_ptr<boost::asio::basic_socket_acceptor<boost::asio::ip::tcp> >&, boost::asio::ssl::context&, const bool&)’
         RPCListen(acceptor, context, fUseSSL);

magirpc.cpp:1085:58: error: no matching function for call to ‘boost::asio::ssl::context::context(boost::asio::io_service&, boost::asio::ssl::context_base::method)’
 ssl::context context(io_service, ssl::context::sslv23);

make: *** [makefile.unix:188: obj/magirpc.o] Error 1

注:完整构建日志可搜索pastebin编号XG59GS1E查看。

解决方案

根因说明

上述报错全部由Boost版本不兼容导致:magi钱包代码适配的是Boost 1.55~1.59版本的Asio API,你当前系统安装的Boost版本过新,新版本Boost对Asio的模板参数定义、SSL上下文构造、内部成员访问接口都做了不兼容修改。

解决方法

方案1:降级Boost版本(兼容性最好,无需修改代码)

  1. 卸载当前系统自带的Boost库,下载Boost 1.58版本源码手动编译安装,建议安装到独立目录(比如/opt/boost1.58)避免覆盖系统库
  2. 打开项目src目录下的makefile.unix,修改Boost头文件和库路径指向你安装的旧版本Boost路径:
BOOST_INCLUDE_PATH=/opt/boost1.58/include
BOOST_LIB_PATH=/opt/boost1.58/lib
  1. 重新执行编译命令即可完成构建

方案2:适配新版Boost(无需降级系统库,需修改少量代码)

编辑src/magirpc.cpp,做三处修改:

  • 替换所有basic_socket_acceptor<Protocol, SocketAcceptorService>为basic_socket_acceptor<Protocol>:新版Asio移除了basic_socket_acceptor的第二个模板参数
  • 替换所有ssl::context context(io_service, ssl::context::sslv23);为ssl::context context(ssl::context::sslv23);:新版ssl::context构造函数不再需要传入io_service参数
  • 替换所有context.impl()为context.native_handle():新版ssl::context的底层句柄获取接口从impl()改为了native_handle()
    修改完成后重新执行编译即可。

内容的提问来源于stack exchange,提问作者swanserquack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 11:15:04