Ubuntu 20.04下使用Boost.Beast编译找不到头文件如何解决
Boost.Beast编译找不到头文件问题解决方案
核心错误排查
- Boost.Beast是C++专属库,不支持C语言项目。你使用
.c后缀的源文件配合gcc默认走C编译流程,本身无法兼容C++编写的Boost库,这是核心错误之一 - 你的手动编译操作路径逻辑错误:执行
git clone --recursive https://github.com/boostorg/boost.git后生成的目录为boost而非beast,直接执行cd beast/属于无效操作,后续的配置、编译流程都没有作用到正确的Boost源码上 - 编译时没有指定Boost头文件的搜索路径,gcc默认不会主动扫描你手动克隆的第三方源码目录下的头文件
具体解决步骤
方案一:用Ubuntu官方源安装Boost(推荐,操作最简单)
- 将你的
sample.c重命名为sample.cpp,确认文件内代码符合C++语法规范 - 执行以下命令安装完整的Boost开发包:
$ sudo apt update && sudo apt install libboost-all-dev - 使用g进行C编译,命令如下:
$ g++ sample.cpp -o sample -lboost_system
编译完成后运行./sample即可执行程序
方案二:使用手动克隆的Boost源码编译安装
- 进入你之前克隆的Boost源码根目录(注意是
boost目录而非不存在的beast目录),执行以下命令完成编译安装:
$ ./bootstrap.sh $ sudo ./b2 install
安装完成后Boost会默认被放到/usr/local目录下
2. 重命名sample.c为sample.cpp,使用以下命令编译:$ g++ sample.cpp -o sample -I/usr/local/include -L/usr/local/lib -lboost_system
3. 运行程序前如果提示找不到动态库,执行$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH后再运行即可
内容的提问来源于stack exchange,提问作者daisukeokaoss
相关产品推荐
相关产品推荐

