[问题简述] 6.6.25-2_rc1.an23 内核 libfuse-test测试中test_examples.pytest_passthrough_hp编译失败,x86-64和aarch64同样问题。 编译报错日志: [root@iZbp143ti4ccpaufkzata3Z build]# ninja-build [1/2] Compiling C++ object example/passthrough_hp.p/passthrough_hp.cc.o FAILED: example/passthrough_hp.p/passthrough_hp.cc.o c++ -Iexample/passthrough_hp.p -Iexample -I../example -Iinclude -I../include -Ilib -I../lib -I. -I.. -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O2 -g -D_REENTRANT -DHAVE_CONFIG_H -D_GNU_SOURCE -Wall -Wextra -Wno-sign-compare -std=c++11 -Wmissing-declarations -Wwrite-strings -fno-strict-aliasing -pthread -MD -MQ example/passthrough_hp.p/passthrough_hp.cc.o -MF example/passthrough_hp.p/passthrough_hp.cc.o.d -o example/passthrough_hp.p/passthrough_hp.cc.o -c ../example/passthrough_hp.cc In file included from ../example/passthrough_hp.cc:77: ../example/cxxopts.hpp: In member function ‘void cxxopts::values::detail::SignedCheck<T, true>::operator()(bool, U, const std::string&)’: ../example/cxxopts.hpp:488:42: error: ‘numeric_limits’ is not a member of ‘std’ 488 | if (u > static_cast<U>(-std::numeric_limits<T>::min())) | ^~~~~~~~~~~~~~ ../example/cxxopts.hpp:488:58: error: expected primary-expression before ‘>’ token 488 | if (u > static_cast<U>(-std::numeric_limits<T>::min())) | ^ ../example/cxxopts.hpp:488:61: error: ‘::min’ has not been declared; did you mean ‘std::min’? 488 | if (u > static_cast<U>(-std::numeric_limits<T>::min())) | ^~~ | std::min In file included from /usr/include/c++/12/regex:50, from ../example/cxxopts.hpp:34: /usr/include/c++/12/bits/stl_algo.h:5736:5: note: ‘std::min’ declared here 5736 | min(initializer_list<_Tp> __l, _Compare __comp) | ^~~ ../example/cxxopts.hpp:495:41: error: ‘numeric_limits’ is not a member of ‘std’ 495 | if (u > static_cast<U>(std::numeric_limits<T>::max())) | ^~~~~~~~~~~~~~ ../example/cxxopts.hpp:495:57: error: expected primary-expression before ‘>’ token 495 | if (u > static_cast<U>(std::numeric_limits<T>::max())) | ^ ../example/cxxopts.hpp:495:60: error: ‘::max’ has not been declared; did you mean ‘std::max’? 495 | if (u > static_cast<U>(std::numeric_limits<T>::max())) | ^~~ | std::max /usr/include/c++/12/bits/stl_algo.h:5756:5: note: ‘std::max’ declared here 5756 | max(initializer_list<_Tp> __l, _Compare __comp) | ^~~ ../example/cxxopts.hpp: In function ‘void cxxopts::values::detail::check_signed_range(bool, U, const std::string&)’: ../example/cxxopts.hpp:515:29: error: ‘numeric_limits’ is not a member of ‘std’ 515 | SignedCheck<T, std::numeric_limits<T>::is_signed>()(negative, value, text); | ^~~~~~~~~~~~~~ ../example/cxxopts.hpp:515:29: error: ‘numeric_limits’ is not a member of ‘std’ ../example/cxxopts.hpp:515:45: error: template argument 2 is invalid 515 | SignedCheck<T, std::numeric_limits<T>::is_signed>()(negative, value, text); | ^ ../example/cxxopts.hpp:515:57: error: qualified-id in declaration before ‘>’ token 515 | SignedCheck<T, std::numeric_limits<T>::is_signed>()(negative, value, text); | ^ ../example/cxxopts.hpp: In function ‘void cxxopts::values::integer_parser(const std::string&, T&)’: ../example/cxxopts.hpp:556:34: error: ‘numeric_limits’ is not a member of ‘std’ 556 | constexpr auto umax = std::numeric_limits<US>::max(); | ^~~~~~~~~~~~~~ ../example/cxxopts.hpp:556:51: error: expected primary-expression before ‘>’ token 556 | constexpr auto umax = std::numeric_limits<US>::max(); | ^ ../example/cxxopts.hpp:556:54: error: ‘::max’ has not been declared; did you mean ‘std::max’? 556 | constexpr auto umax = std::numeric_limits<US>::max(); | ^~~ | std::max /usr/include/c++/12/bits/stl_algo.h:5756:5: note: ‘std::max’ declared here 5756 | max(initializer_list<_Tp> __l, _Compare __comp) | ^~~ ../example/cxxopts.hpp:557:39: error: ‘numeric_limits’ is not a member of ‘std’ 557 | constexpr bool is_signed = std::numeric_limits<T>::is_signed; | ^~~~~~~~~~~~~~ ../example/cxxopts.hpp:557:55: error: expected primary-expression before ‘>’ token 557 | constexpr bool is_signed = std::numeric_limits<T>::is_signed; | ^ ../example/cxxopts.hpp:557:58: error: ‘::is_signed’ has not been declared; did you mean ‘std::is_signed’? 557 | constexpr bool is_signed = std::numeric_limits<T>::is_signed; | ^~~~~~~~~ | std::is_signed In file included from /usr/include/c++/12/bits/stl_pair.h:60, from /usr/include/c++/12/bits/stl_algobase.h:64, from /usr/include/c++/12/list:60, from ../example/passthrough_hp.cc:76: /usr/include/c++/12/type_traits:820:12: note: ‘std::is_signed’ declared here 820 | struct is_signed | ^~~~~~~~~ ../example/cxxopts.hpp: In instantiation of ‘void cxxopts::values::detail::check_signed_range(bool, U, const std::string&) [with T = unsigned char; U = unsigned char; std::string = std::__cxx11::basic_string<char>]’: ../example/cxxopts.hpp:594:36: required from ‘void cxxopts::values::integer_parser(const std::string&, T&) [with T = unsigned char; std::string = std::__cxx11::basic_string<char>]’ ../example/cxxopts.hpp:622:21: required from here ../example/cxxopts.hpp:513:31: warning: unused parameter ‘negative’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~^~~~~~~~ ../example/cxxopts.hpp:513:43: warning: unused parameter ‘value’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~^~~~~ ../example/cxxopts.hpp:513:69: warning: unused parameter ‘text’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~~~~~~~~~~~~~~~^~~~ ../example/cxxopts.hpp: In instantiation of ‘void cxxopts::values::detail::check_signed_range(bool, U, const std::string&) [with T = signed char; U = unsigned char; std::string = std::__cxx11::basic_string<char>]’: ../example/cxxopts.hpp:594:36: required from ‘void cxxopts::values::integer_parser(const std::string&, T&) [with T = signed char; std::string = std::__cxx11::basic_string<char>]’ ../example/cxxopts.hpp:629:21: required from here ../example/cxxopts.hpp:513:31: warning: unused parameter ‘negative’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~^~~~~~~~ ../example/cxxopts.hpp:513:43: warning: unused parameter ‘value’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~^~~~~ ../example/cxxopts.hpp:513:69: warning: unused parameter ‘text’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~~~~~~~~~~~~~~~^~~~ ../example/cxxopts.hpp: In instantiation of ‘void cxxopts::values::detail::check_signed_range(bool, U, const std::string&) [with T = short unsigned int; U = short unsigned int; std::string = std::__cxx11::basic_string<char>]’: ../example/cxxopts.hpp:594:36: required from ‘void cxxopts::values::integer_parser(const std::string&, T&) [with T = short unsigned int; std::string = std::__cxx11::basic_string<char>]’ ../example/cxxopts.hpp:636:21: required from here ../example/cxxopts.hpp:513:31: warning: unused parameter ‘negative’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~^~~~~~~~ ../example/cxxopts.hpp:513:43: warning: unused parameter ‘value’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~^~~~~ ../example/cxxopts.hpp:513:69: warning: unused parameter ‘text’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~~~~~~~~~~~~~~~^~~~ ../example/cxxopts.hpp: In instantiation of ‘void cxxopts::values::detail::check_signed_range(bool, U, const std::string&) [with T = short int; U = short unsigned int; std::string = std::__cxx11::basic_string<char>]’: ../example/cxxopts.hpp:594:36: required from ‘void cxxopts::values::integer_parser(const std::string&, T&) [with T = short int; std::string = std::__cxx11::basic_string<char>]’ ../example/cxxopts.hpp:643:21: required from here ../example/cxxopts.hpp:513:31: warning: unused parameter ‘negative’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~^~~~~~~~ ../example/cxxopts.hpp:513:43: warning: unused parameter ‘value’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~^~~~~ ../example/cxxopts.hpp:513:69: warning: unused parameter ‘text’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~~~~~~~~~~~~~~~^~~~ ../example/cxxopts.hpp: In instantiation of ‘void cxxopts::values::detail::check_signed_range(bool, U, const std::string&) [with T = unsigned int; U = unsigned int; std::string = std::__cxx11::basic_string<char>]’: ../example/cxxopts.hpp:594:36: required from ‘void cxxopts::values::integer_parser(const std::string&, T&) [with T = unsigned int; std::string = std::__cxx11::basic_string<char>]’ ../example/cxxopts.hpp:650:21: required from here ../example/cxxopts.hpp:513:31: warning: unused parameter ‘negative’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~^~~~~~~~ ../example/cxxopts.hpp:513:43: warning: unused parameter ‘value’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~^~~~~ ../example/cxxopts.hpp:513:69: warning: unused parameter ‘text’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~~~~~~~~~~~~~~~^~~~ ../example/cxxopts.hpp: In instantiation of ‘void cxxopts::values::detail::check_signed_range(bool, U, const std::string&) [with T = int; U = unsigned int; std::string = std::__cxx11::basic_string<char>]’: ../example/cxxopts.hpp:594:36: required from ‘void cxxopts::values::integer_parser(const std::string&, T&) [with T = int; std::string = std::__cxx11::basic_string<char>]’ ../example/cxxopts.hpp:657:21: required from here ../example/cxxopts.hpp:513:31: warning: unused parameter ‘negative’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~^~~~~~~~ ../example/cxxopts.hpp:513:43: warning: unused parameter ‘value’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~^~~~~ ../example/cxxopts.hpp:513:69: warning: unused parameter ‘text’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~~~~~~~~~~~~~~~^~~~ ../example/cxxopts.hpp: In instantiation of ‘void cxxopts::values::detail::check_signed_range(bool, U, const std::string&) [with T = long unsigned int; U = long unsigned int; std::string = std::__cxx11::basic_string<char>]’: ../example/cxxopts.hpp:594:36: required from ‘void cxxopts::values::integer_parser(const std::string&, T&) [with T = long unsigned int; std::string = std::__cxx11::basic_string<char>]’ ../example/cxxopts.hpp:664:21: required from here ../example/cxxopts.hpp:513:31: warning: unused parameter ‘negative’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~^~~~~~~~ ../example/cxxopts.hpp:513:43: warning: unused parameter ‘value’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~^~~~~ ../example/cxxopts.hpp:513:69: warning: unused parameter ‘text’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~~~~~~~~~~~~~~~^~~~ ../example/cxxopts.hpp: In instantiation of ‘void cxxopts::values::detail::check_signed_range(bool, U, const std::string&) [with T = long int; U = long unsigned int; std::string = std::__cxx11::basic_string<char>]’: ../example/cxxopts.hpp:594:36: required from ‘void cxxopts::values::integer_parser(const std::string&, T&) [with T = long int; std::string = std::__cxx11::basic_string<char>]’ ../example/cxxopts.hpp:671:21: required from here ../example/cxxopts.hpp:513:31: warning: unused parameter ‘negative’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~^~~~~~~~ ../example/cxxopts.hpp:513:43: warning: unused parameter ‘value’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~^~~~~ ../example/cxxopts.hpp:513:69: warning: unused parameter ‘text’ [-Wunused-parameter] 513 | check_signed_range(bool negative, U value, const std::string& text) | ~~~~~~~~~~~~~~~~~~~^~~~ ninja: build stopped: subcommand failed. [复验步骤]: git clone https://github.com/libfuse/libfuse.git cd libfuse mkdir build cd build export PATH=/usr/local/bin/:$PATH meson .. ninja-build ninja-build install modprobe fuse modprobe cuse python3 -m pytest test/ [期望结果] case pass [实际结果] 用例编译失败 [测试环境] [root@iZbp143ti4ccpaufkzata3Z build]# uname -r ; python -V 6.6.25-2_rc1.an23.aarch64 Python 3.10.13 [root@iZbp143ti4ccpaufkzata3Z build]# rpm -qa | grep gcc libgcc-12.2.1-7.an23.aarch64 gcc-12.2.1-7.an23.aarch64 gcc-c++-12.2.1-7.an23.aarch64 [root@iZbp143ti4ccpaufkzata3Z build]# rpm -qa | grep libstdc++ libstdc++-12.2.1-7.an23.aarch64 libstdc++-devel-12.2.1-7.an23.aarch64 [出现频率] 必现 [原因分析]:
多开的,无效关闭