Message ID | 20250404020948.3903214-1-raj.khem@gmail.com |
---|---|
State | New |
Headers | show |
Series | [1/2] gcc-target: Disable multilibs on riscv32/riscv64 targets | expand |
diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc index 6b47c10413a..6acf5a9604b 100644 --- a/meta/recipes-devtools/gcc/gcc-target.inc +++ b/meta/recipes-devtools/gcc/gcc-target.inc @@ -1,4 +1,7 @@ GCCMULTILIB = "--enable-multilib" +GCCMULTILIB:riscv32 = "--disable-multilib" +GCCMULTILIB:riscv64 = "--disable-multilib" + require gcc-configure-common.inc EXTRA_OECONF_PATHS = "\
It builds a default multilib set know-how into compiler even-though we do not have any multilib on target gcc. It alters the c++ standard header paths to multilib specific subdirs e.g. ignoring nonexistent directory "/usr/lib/gcc/riscv32-yoe-linux/15.0.1/../../../../include/c++/15.0.1/riscv32-yoe-linux/rv32imafdc/ilp32d" as a result it will not find the c++ headers because gcc-runtime has installed them in ( disabled multilib assumption) "/usr/lib/gcc/riscv32-yoe-linux/15.0.1/../../../../include/c++/15.0.1/riscv32-yoe-linux/" Therefore disable multilib during configure to match the runtime installation options. Without this GCC on target is not able to compile simple C++ programs e.g. g++ -Wall -W -O2 -c -o arg_parser.o arg_parser.cc In file included from /usr/include/c++/15.0.1/cstring:47, from arg_parser.cc:20: /usr/include/c++/15.0.1/bits/version.h:51:10: fatal error: bits/c++config.h: No such file or directory 51 | #include <bits/c++config.h> | ^~~~~~~~~~~~~~~~~~ Signed-off-by: Khem Raj <raj.khem@gmail.com> --- meta/recipes-devtools/gcc/gcc-target.inc | 3 +++ 1 file changed, 3 insertions(+)