| Summary: | gcc-runtime_5.3: misplaced include files | ||
|---|---|---|---|
| Product: | [Build System, Metadata & Runtime] OE-Core | Reporter: | Michel D'HOOGE <michel.dhooge> |
| Component: | devtools / tool chain | Assignee: | Juro Bystricky <juro.bystricky> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | Medium+ | CC: | meta.mr.watcher, meta.watcher |
| Version: | 2.1.2 | ||
| Target Milestone: | 2.2 M4 | ||
| Hardware: | x86 | ||
| OS: | x86_64 | ||
| Whiteboard: | |||
| OS type for building Yocto: | --- | Type of Regression: | --- |
| Verified: | Documentation change: | No (bug/feature does not impact docs) | |
| Bug Depends on: | 10380 | ||
| Bug Blocks: | |||
To be sure, I compared with a plain genericx86-64 meta-toolchain (i.e. without DEFAULTTUNE set to x86-64-x32). The headers are also in a subfolder (x86_64-poky-linux), but they are correctly found by the g++ compiler. HTH Yes, CPP is looking for the include files in a folder which does not exist. This can/should be fixed by a symlink in location: <sdkinstall>/sysroots/x86_64_x32-poky-linux-gnux32/usr/include/c++/6.2.0 which should contain a symlink named "x86_64-poky-linux" with the target "x86_64-poky-linux-gnux32" Because CPP looks for the include files in: <sdkinstall>/sysroots/x86_64_x32-poky-linux-gnux32/usr/include/c++/6.2.0/x86_64-poky-linux however the files are located in the folder <sdkinstall>/sysroots/x86_64_x32-poky-linux-gnux32/usr/include/c++/6.2.0/x86_64-poky-linux-gnunx32 Patch fixing the problem merged with master: https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=8209a01242b3ea265c69049879e9ade951bf9602 |
I bitbaked the meta-toolchain with the following local.conf: MACHINE = "genericx86-64" DEFAULTTUNE = "x86-64-x32" baselib = "${@d.getVar('BASE_LIB_tune-' + (d.getVar('DEFAULTTUNE', True) or 'INVALID'), True) or 'lib'}" DISTRO = "poky" PACKAGE_CLASSES = "package_rpm" The following include files are placed into folder /sysroots/x86_64_x32-poky-linux-gnux32/usr/include/c++/5.3.0/x86_64-poky-linux-gnux32 and they cannot be found by the g++ compiler. bits: atomic_word.h c++config.h cpu_defines.h cxxabi_tweaks.h gthr-default.h gthr-single.h os_defines.h time_members.h basic_file.h c++io.h ctype_base.h error_constants.h gthr.h messages_members.h stdc++.h c++allocator.h c++locale.h ctype_inline.h extc++.h gthr-posix.h opt_random.h stdtr1c++.h ext: opt_random.h If I merge the x86_64-poky-linux-gnux32/bits & x86_64-poky-linux-gnux32/ext folders with their matching siblings one level above, everything is fine. The following simple main.cpp, with a single include and no body, is enough to test: #include <bits/c++config.h>