Linux编译简单web服务器

文章讲述了在Linux下使用线程池实现的高性能Web服务器开发过程中遇到的链接器问题,即如何处理类中的静态变量m_epollfd的引用。问题在于,尽管静态变量可以在类外使用,但在未提供定义时编译器会报undefinedreference错误。解决方法是确保链接时包含相应的源文件http_conn.cpp。
摘要由CSDN通过智能技术生成

源码:Linux高性能服务器编程(游双):第十五章:用线程池实现的简单Web服务器源码

共五个文件:threadpool.h,locekr.h,http_conn.h,http_conn.cpp,server.cpp

遇见的问题:

1、/usr/bin/ld: server.cpp:(.text+0x49c): undefined reference to `http_conn::m_epollfd'

原因:m_epollfd为类http_conn中的静态变量,虽然可以在未定义类的对象之前就直接使用,但是需要在使用之前在类外部提供实际的定义。我在http_conn.h声明了该静态变量,并在http_conn.cpp对改变了进行定义,但是我直接使用g++ server.cpp命令,这样链接器无法找到http_conn.cpp文件,也就无法找到静态变量m_epollfd的定义,就会出现undefined reference错误

解决方法:g++ http_conn.cpp server.cpp。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值