Boost 适用 filesystem 库,statx 函数无法找到引用问题的解决方案。

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 函数找不到引用的问题了。

你可能感兴趣的:(C/C++,c++)