编译component_drivers组件报错缺少文件securec.h

问题描述

编译component_drivers组件报错缺少文件securec.h

使用只能构建命令./scripts/smart_build.sh

报错信息如下

root@7137cac67541:/home/workspace/BMC/manifest/component_drivers# ./scripts/smart_build.sh
[INFO] 开始智能编译…
[INFO] 检查 libboost-all-dev 是否安装…
[INFO] libboost-all-dev 已安装
[INFO] 检查 libgtest-dev 是否安装…
[INFO] libgtest-dev 已安装
[INFO] 检查 ninja-build 是否安装…
[INFO] ninja-build 已安装
[INFO] 检查 gcc 是否安装…
[INFO] gcc 已安装
[INFO] 检查 g++ 是否安装…
[INFO] g++ 已安装
[INFO] 依赖安装完成
[INFO] 系统信息: CPU核数=32, 总内存=251GB, 可用内存=245GB, Swap=47GB, 覆盖率=false
[INFO] 计算结果: 基于内存=81, 基于CPU=16, 最终选择=16
[INFO] 将使用 16 个并发任务进行编译
[INFO] 开始编译…
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /usr/bin/ninja -C /home/workspace/BMC/manifest/component_drivers/builddir -j 16
ninja: Entering directory `/home/workspace/BMC/manifest/component_drivers/builddir’
[1/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_Memory.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_Memory.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_Memory.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_Memory.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_Memory.cpp.o -c ../gen/src/device_tree/interface/Memory.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/Memory.h:16,
from ../gen/src/device_tree/interface/Memory.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[2/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_Manager.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_Manager.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_Manager.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_Manager.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_Manager.cpp.o -c ../gen/src/device_tree/interface/Manager.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/Manager.h:16,
from ../gen/src/device_tree/interface/Manager.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[3/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Cooling.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Cooling.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Cooling.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Cooling.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Cooling.cpp.o -c ../gen/src/device_tree/interface/OpticalModule/Cooling.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/OpticalModule/Cooling.h:16,
from ../gen/src/device_tree/interface/OpticalModule/Cooling.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[4/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Current.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Current.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Current.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Current.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Current.cpp.o -c ../gen/src/device_tree/interface/OpticalModule/Current.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/OpticalModule/Current.h:16,
from ../gen/src/device_tree/interface/OpticalModule/Current.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[5/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Power.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Power.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Power.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Power.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Power.cpp.o -c ../gen/src/device_tree/interface/OpticalModule/Power.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/OpticalModule/Power.h:16,
from ../gen/src/device_tree/interface/OpticalModule/Power.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[6/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Status.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Status.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Status.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Status.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Status.cpp.o -c ../gen/src/device_tree/interface/OpticalModule/Status.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/OpticalModule/Status.h:16,
from ../gen/src/device_tree/interface/OpticalModule/Status.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[7/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_Metrics.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_Metrics.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_Metrics.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_Metrics.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_Metrics.cpp.o -c ../gen/src/device_tree/interface/NetworkPort/Metrics.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/NetworkPort/Metrics.h:16,
from ../gen/src/device_tree/interface/NetworkPort/Metrics.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[8/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Channel.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Channel.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Channel.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Channel.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Channel.cpp.o -c ../gen/src/device_tree/interface/OpticalModule/Channel.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/OpticalModule/Channel.h:16,
from ../gen/src/device_tree/interface/OpticalModule/Channel.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[9/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Diagnose.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Diagnose.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Diagnose.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Diagnose.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Diagnose.cpp.o -c ../gen/src/device_tree/interface/OpticalModule/Diagnose.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/OpticalModule/Diagnose.h:16,
from ../gen/src/device_tree/interface/OpticalModule/Diagnose.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[10/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_LinkInfo.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_LinkInfo.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_LinkInfo.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_LinkInfo.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_LinkInfo.cpp.o -c ../gen/src/device_tree/interface/NetworkPort/LinkInfo.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/NetworkPort/LinkInfo.h:16,
from ../gen/src/device_tree/interface/NetworkPort/LinkInfo.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[11/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_DataCenterBridging.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_DataCenterBridging.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_DataCenterBridging.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_DataCenterBridging.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_DataCenterBridging.cpp.o -c ../gen/src/device_tree/interface/NetworkPort/DataCenterBridging.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/NetworkPort/DataCenterBridging.h:16,
from ../gen/src/device_tree/interface/NetworkPort/DataCenterBridging.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[12/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Voltage.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Voltage.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Voltage.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Voltage.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_OpticalModule_Voltage.cpp.o -c ../gen/src/device_tree/interface/OpticalModule/Voltage.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/OpticalModule/Voltage.h:16,
from ../gen/src/device_tree/interface/OpticalModule/Voltage.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[13/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_LLDPReceive.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_LLDPReceive.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_LLDPReceive.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_LLDPReceive.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_NetworkPort_LLDPReceive.cpp.o -c ../gen/src/device_tree/interface/NetworkPort/LLDPReceive.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/NetworkPort/LLDPReceive.h:16,
from ../gen/src/device_tree/interface/NetworkPort/LLDPReceive.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[14/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_PCIeCard.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_PCIeCard.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_PCIeCard.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_PCIeCard.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_PCIeCard.cpp.o -c ../gen/src/device_tree/interface/PCIeCard.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/PCIeCard.h:16,
from ../gen/src/device_tree/interface/PCIeCard.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[15/1507] Compiling C++ object gen/libdevice_tree.so.p/src_device_tree_interface_BoardBoard.cpp.o
FAILED: gen/libdevice_tree.so.p/src_device_tree_interface_BoardBoard.cpp.o
c++ -Igen/libdevice_tree.so.p -Igen -I../gen -I../gen/include -Isubprojects/libmcpp/include -I../subprojects/libmcpp/include -I/usr/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++17 -O0 -g -Wall -Wextra -fvisibility=hidden -fpermissive -Wno-error=attributes -Wno-error=deprecated-declarations -fno-strict-aliasing -DENABLE_CONAN_COMPILE=0 -fPIC -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-pedantic -Wno-deprecated-copy -fPIC -DBOOST_ALL_NO_LIB -Os -ffunction-sections -fdata-sections -MD -MQ gen/libdevice_tree.so.p/src_device_tree_interface_BoardBoard.cpp.o -MF gen/libdevice_tree.so.p/src_device_tree_interface_BoardBoard.cpp.o.d -o gen/libdevice_tree.so.p/src_device_tree_interface_BoardBoard.cpp.o -c ../gen/src/device_tree/interface/BoardBoard.cpp
In file included from ../subprojects/libmcpp/include/mc/core/object.h:16,
from ../subprojects/libmcpp/include/mc/db/common.h:16,
from ../subprojects/libmcpp/include/mc/db/index.h:16,
from ../subprojects/libmcpp/include/mc/db/table.h:16,
from ../subprojects/libmcpp/include/mc/db/database.h:16,
from ../subprojects/libmcpp/include/mc/engine/engine.h:16,
from ../subprojects/libmcpp/include/mc/engine.h:15,
from ../gen/include/device_tree/base.h:16,
from ../gen/include/device_tree/interface/FanBoard.h:16,
from ../gen/src/device_tree/interface/BoardBoard.cpp:13:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
34 | #include “securec.h”
| ^~~~~~~~~~~
compilation terminated.
[16/1507] Linking target subprojects/libmcpp/src/libmcpp.so
ninja: build stopped: subcommand failed.
[ERROR] 编译失败

环境信息

  • 操作系统:Ubuntu 24.04

  • 软件版本:"1.2.74

  • 硬件配置:[如 CPU、内存等]

重现步骤

期望结果

可以编译通过

实际结果

编译失败报错缺少文件securec.h

尝试过的解决方案

安装软件apt install libsecurec-dev但是没有找到安装包

答案内容由AI生成,仅供参考:
:white_check_mark: 结论:本次编译失败的根本原因是 huawei_secure_c 库缺失。请通过 Conan 正确引入该依赖即可解决。

点击此处查看详细分析解答

编译 component_drivers 组件报错缺少 securec.h 文件的解决方案

在使用构建脚本 ./scripts/smart_build.sh 编译 component_drivers 组件时,出现 fatal error: securec.h: No such file or directory 的编译错误。该问题的根本原因与 华为安全C库(huawei_secure_c) 的缺失或未正确配置有关。


:magnifying_glass_tilted_left: 问题分析

:cross_mark: 错误信息摘要

In file included from ../subprojects/libmcpp/include/mc/core/object.h:16:
../subprojects/libmcpp/include/mc/common.h:34:10: fatal error: securec.h: No such file or directory
   #include “securec.h”

securec.h 头文件是 华为安全C库(huawei_secure_c) 的一部分,主要用于提供增强的安全函数(如 strcpy_s, memcpy_s 等),以替代传统C库中易引发缓冲区溢出的不安全函数。


:pushpin: 根本原因

根据知识图谱和文档分析:

  1. libmcpp 依赖 huawei_secure_c

    • libmcpp 框架在头文件 mc/common.h 中直接引用了 securec.h
    • 实体 libmcpp 的描述中明确指出其依赖 huawei_secure_c/1.0.2@openumbc/stable
    • 关系 huawei_secure_c → libmcpp 表明:huawei_secure_clibmcpp 构建时的必要依赖项。
  2. 缺少 huawei_secure_c 的 Conan 包或头文件路径未正确引入

    • component_drivers 依赖 libmcpp,而 libmcpp 又依赖 huawei_secure_c
    • 若 Conan 远端未配置正确,或本地缓存中缺少该包,则 securec.h 无法被找到。
    • 用户尝试通过系统包管理器安装 libsecurec-dev 失败,说明该库并非标准开源包,而是 华为私有或定制版本,必须通过内部渠道(如 Conan 仓库)获取。
  3. huawei_secure_c 与其他组件存在版本冲突

    • 已知 libloggerlibmcpp 可能对 huawei_secure_c 的版本有不同要求。
    • 实体关系 huawei_secure_c → libmcpp 中指出:需通过 根包 override 机制 解决版本冲突。

:white_check_mark: 解决方案

:white_check_mark: 方案一:确保 huawei_secure_c Conan 包正确安装

目标:让 Conan 成功下载并链接 huawei_secure_c 包,提供 securec.h

  1. 确认 Conan 远端已配置

    conan remote list
    

    确保包含以下远程仓库:

    https://conan.openubmc.cn/openubmc_opensource
    
  2. 手动安装 huawei_secure_c

    conan install huawei_secure_c/1.0.2@openubmc/stable -r openubmc_opensource
    
    • 若提示找不到包,请确认网络可访问该远端,或联系管理员确认权限。
    • 若版本不匹配,可在项目 conanfile.py 中显式添加依赖或 override。
  3. 修改 mds/service.jsonconanfile.py 显式声明依赖
    component_driversmds/service.json 文件中添加:

    {
      "dependencies": [
        "huawei_secure_c/1.0.2@openubmc/stable"
      ]
    }
    

:white_check_mark: 方案二:使用 Conan 配置 override 解决版本冲突

如果报错源于多个组件对 huawei_secure_c 版本不一致(例如 liblogger 要求旧版,libmcpp 要求新版),可在构建命令中强制指定版本:

bingo build --profile:build=profile.ini --profile:host=profile.ini \
  -o:huawei_secure_c=1.0.2@openubmc/stable

或者在 conanfile.py 中添加:

def configure(self):
    self.options["huawei_secure_c"].version = "1.0.2"

:white_check_mark: 方案三:检查构建环境完整性(bmc_sdk 匹配)

参考知识库文档中 “本地出组件构建,bingo build出现报错:闭源组件触发源码构建” 的解决方案:

  • 问题可能源于 bmc_sdk 与当前代码版本不匹配
  • :white_check_mark: 正确做法:
    • 切换到对应版本构建时,使用官网发布的 对应版本 bmc_sdk
    • 例如:构建 25.09 分支应使用 bmc_sdk_25.09
    • 若环境为 2512+hal,请确保 SDK 也为此版本。

:white_check_mark: 方案四:手动验证 securec.h 是否可被找到

进入 libmcpp 子项目目录,检查是否可通过 pkg-config 找到 huawei_secure_c

pkg-config --cflags huawei_secure_c

若无输出,则说明 Conan 未正确生成 .pc 文件或未注册路径。


:hammer_and_wrench: 建议的调试步骤

  1. 查看 Conan 日志

    • 检查 temp/log/task.log 或组件专属日志文件。
    • 查找是否因网络、权限或版本问题导致 huawei_secure_c 下载失败。
  2. 清理并重试

    rm -rf ~/.conan2/p  # 清理Conan本地缓存(Conan v2)
    bingo build --force
    
  3. 启用详细日志

    VERBOSE=ON bingo build
    
  4. 尝试单独构建 libmcpp

    cd subprojects/libmcpp
    conan create . -pr=your-profile
    

    观察是否同样报 securec.h 错误,以确认问题边界。


:books: 相关知识点摘要

项目 说明
securec.h 华为提供的一种增强型C语言安全接口头文件,用于防止缓冲区溢出等安全问题
huawei_secure_c 一个 Conan 包,版本为 1.0.2@openubmc/stable,是 libmcpp 的强制依赖
libmcpp openUBMC 的核心框架,依赖 huawei_secure_c, Boost, dbus-1 等组件
component_drivers 依赖 libmcpp,因此间接依赖 huawei_secure_c
bmc_sdk 构建所需的基础工具链和闭源库集合,版本必须与代码基线一致

:white_check_mark: 总结

步骤 操作
1 确认 Conan 远端 https://conan.openubmc.cn/openubmc_opensource 已配置
2 手动安装 huawei_secure_c/1.0.2@openubmc/stable
3 mds/service.jsonconanfile.py 中显式添加依赖
4 使用 override 解决与其他组件(如 liblogger)的版本冲突
5 确保使用的 bmc_sdk 与当前代码版本一致

:warning: 特别提醒apt install libsecurec-dev 无法解决问题,因为此库不是标准 Linux 发行版中的开源包,必须通过 Conan 从内部仓库获取


:white_check_mark: 结论:本次编译失败的根本原因是 huawei_secure_c 库缺失。请通过 Conan 正确引入该依赖即可解决。

删掉subprojects下的libmcpp文件夹,再重新编译试试。

删除后重新执行编译脚本后,文件会自动下载出来,还是报那个错误

/subprojects/libmcpp/src/meson.build文件加个修改,增加’stubdir_global‘到搜索路径,我本地可以编过了。

1 个赞

我也遇到了相同的问题,使用上述修改之后除了tests模块编译失败,其余可以正常编译了 :+1:

谢谢,我刚刚编译通过了。