关于boost编译多线程遇到的问题(无法编译)和我的makefile

本人最近在写多线程相关的程序,用到了boost多线程,其中boost库用的是1.68,操作系统是Ubuntu16 boost库已经完全编译安装。但是在用make编译的时候还是出错了,这里说明一下就是,已经包含头文件了。只有编译多线程会出错。编译原子操作不会。

 可能会遇到这样的错误。遇到这种错误主要是因为没有链接多线程的库。

 -lboost_system -lboost_thread

你需要在你的makefile的链接库中添加库。就可以编译通过了。

我自己写的通用makefile

.PYONY:clean
cc = g++
CFLAGS = -Wall -g -I ./inc -I. -std=c++11  #头文件
LIBO = -lpthread -lm -lboost_system -lboost_thread	#链接
BIN = main
SUBDIR = $(shell ls -d */)  
ROOTSRC = $(wildcard *.cpp)     
ROOTOBJ = $(ROOTSRC:%.c=%.o)
SUBSRC = $(shell find $(SUBDIR) -name '*.cpp')
SUBOBJ = $(SUBSRC:%.c=%.o)
 
$(BIN):$(ROOTOBJ) $(SUBOBJ)
		$(cc) $(CFLAGS) -o $(BIN) $(ROOTOBJ)  $(SUBOBJ) $(LIBO)
 $(SUBOBJ).c.o:
	 $(cc) $(CFLAGS) -c $< -o $@
 
clean:
	  rm -f $(BIN) $(ROOTOBJ) $(SUBOBJ) 



cc 是变量名,用g++ 作为编译器。

CFLAGS是需要链接的头文件, -Wall是检测是否有警告,-g是为gdb调试用的,-I ./inc 是链接./inc的头文件 -I. 是链接boost库中的文件 -std=c++11 是使用c++11标准编译。

LIBO是链接库,-lpthread是链接pthread多线程的库,C++11标准也用到了,-lm是链接数学库,-lboost_system -lboost_thread这两个是链接boost多线程库。

BIN是生成的可执行文件

SUBDIR 是执行的shell命令。

下面就是编译的具体步骤。

这个文件放到项目根目录下就可以编译src中的源文件和inc中头文件了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波雅_汉库克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值