g++编译boost::asio时错误(boost service)

source:http://blog.sina.com.cn/s/blog_6e4643130100x0tj.html


提前已经编译好了boost库经测试没有问题。
代码:
  service.cpp                                                                        
#include <iostream>
#include <boost/asio.hpp>
using namespace std;
using boost::asio::ip::tcp;

int main ()
{
    try
    {
    //
        boost::asio::io_service ioservice;
        tcp::acceptoraccept(ioservice,tcp::endpoint(tcp::v4(),6688));
        while(true)
        {
            tcp::socket sock(ioservice);
            accept.accept(sock);
            cout<<sock.remote_endpoint().address()<<endl;
            sock.write_some(boost::asio::buffer("hello pig"));
        }
    }
    catch(exception&e)
    {
        cerr<<e.what()<<endl;
    }

    return 0;
}

编译:
g++ service.cpp

错误:
/tmp/ccSU1pc4.o: In function`__static_initialization_and_destruction_0(int, int)':
service.cpp:(.text+0x22f): undefined reference to`boost::system::generic_category()'
service.cpp:(.text+0x239): undefined reference to`boost::system::generic_category()'
service.cpp:(.text+0x243): undefined reference to`boost::system::system_category()'
/tmp/ccSU1pc4.o: In function`boost::system::error_code::error_code()':
service.cpp:(.text._ZN5boost6system10error_codeC2Ev[_ZN5boost6system10error_codeC5Ev]+0x10):undefined reference to `boost::system::system_category()'
/tmp/ccSU1pc4.o: In function`boost::asio::error::get_system_category()':
service.cpp:(.text._ZN5boost4asio5error19get _system_categoryEv[boost::asio::error::get_system_category()]+0x7):undefined reference to `boost::system::system_category()'
/tmp/ccSU1pc4.o: In function`boost::asio::detail::posix_tss_ptr_create(unsignedint&)':
service.cpp:(.text._ZN5boost4asio6detail20po six_tss_ptr_createERj[boost::asio::detail::posix_tss_ptr_create(unsignedint&)]+0x15): undefined reference to`pthread_key_create'
/tmp/ccSU1pc4.o: In function`boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::task_io_service>::context>::~posix_tss_ptr()':
service.cpp:(.text._ZN5boost4asio6detail13po six_tss_ptrINS1_10call_stackINS1_15task_io_serviceEE7contextEED2Ev[_ZN5boost4asio6detail13po six_tss_ptrINS1_10call_stackINS1_15task_io_serviceEE7contextEED5Ev]+0xf):undefined reference to `pthread_key_delete'
/tmp/ccSU1pc4.o: In function`boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::strand_service::strand_impl>::context>::~posix_tss_ptr()':
service.cpp:(.text._ZN5boost4asio6detail13po six_tss_ptrINS1_10call_stackINS1_14strand_service11strand_implEE7contextEED2Ev[_ZN5boost4asio6detail13po six_tss_ptrINS1_10call_stackINS1_14strand_service11strand_implEE7contextEED5Ev]+0xf):undefined reference to `pthread_key_delete'
collect2: ld 返回 1

重新编译:
g++ -o service service.cpp -L -lboost_thread -lboost_system



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`boost::asio::ip` 是 Boost.Asio 库中的一个模块,它提供了高级接口用于处理 Internet 协议(IP)和 TCP/IP 相关的功能,如网络套接字、地址解析等。如果你在使用这个库遇到编译错误或警告,报红通常意味着代码存在语法错误、库依赖不正确、或者你尝试使用的特定功能可能在当前环境下不被支持。 报红的具体原因可能包括: 1. **缺少头文件**:确保你已经包含了 `boost/asio/ip.hpp` 或者相应的 IP 特性头文件。 2. **未正确初始化**:可能在创建异步操作前没有正确设置 ASIO 的运行环境,例如未调用 `io_service.run()` 或者 `io_service.run_one()`。 3. **错误的类型或函数使用**:检查你的函数参数类型是否匹配库的预期,例如使用了错误的 IP 地址类型。 4. **版本兼容性问题**:如果使用的 Boost 版本与你所依赖的功能不兼容,可能会引发错误。 5. **API 已更新**:Boost 的库可能会有更新,旧的 API 可能已经被弃用或者改变,你需要查阅最新的文档来适应新的接口。 为了解决这个问题,请按以下步骤进行: 1. **查看编译错误信息**:错误消息会告诉你具体的出错位置和原因。 2. **检查库版本**:确保你使用的 Boost 版本支持 ASIO 的 `ip` 功能。 3. **查阅文档**:访问 Boost.Asio 或 `boost::asio::ip` 的官方文档,寻找解决方案或替代方法。 4. **更新代码**:修复语法错误,调整函数调用或引入所需的依赖。 如果你能提供具体的报错信息,我可以帮助你更准确地定位问题。相关问题: 1. 你遇到的是编译错误还是运行错误? 2. 错误信息中提到了哪些函数或类? 3. 是否使用了特定的 Boost.Asio 版本?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值