1、boost 高版本使用了 statx 函数,这个函数是在 Linux 内核版本 4.11 之后引入的。
所以:可以升级 Linux 内核版本到4.11之后即可。
2、降低 boost 库版本到 1.70 以下
3、正确的路,改 boost 的编译代码
先看这个:
Filesystem Home (boost.org)
在看这个:
filesystem/CMakeLists.txt at develop · boostorg/filesystem (github.com)
开始改改:
1、nano libs/filesystem/CMakeLists.txt
2、新版 boost 的代码之中是显示定义了这个东西,老的没有,但是这东西就是一个定义宏:
没有就跟下面是一个效果。
它是做 #if BOOST_FILESYSTEM_DISABLE_STATX 判断的。
set(BOOST_FILESYSTEM_DISABLE_STATX OFF CACHE BOOL "Disable usage of statx API in Boost.Filesystem")
OFF 就是这个宏值是0
把它改成:
set(BOOST_FILESYSTEM_DISABLE_STATX ON CACHE BOOL "Disable usage of statx API in Boost.Filesystem")
这里是说改 CMakeLists.txt 来解决,当然也可以直接去该 filesystem 库的根头文件(配置h头文件)在里面直接定义 BOOST_FILESYSTEM_DISABLE_STATX 宏,值就是1。
解决:现在再把这个 filesystem 库重新编译出来,自己的解决方案工程在链接它就不会 statx 函数找不到引用的问题了。