【问题标题】:How to use header file <xmmintrin.h> with Yocto-generated SDK?如何将头文件 <xmmintrin.h> 与 Yocto 生成的 SDK 一起使用?
【发布时间】:2018-07-27 08:22:20
【问题描述】:

我对 Yocto 生成的 SDK 有疑问:尝试使用 SDK 进行编译时找不到头文件 xmmintrin.h。示例:

$ echo '#include <xmmintrin.h>' > t.cpp
$ $CXX $CXXFLAGS -no-canonical-prefixes -c t.cpp
t.cpp:1:10: fatal error: 'xmmintrin.h' file not found

$CXX 指向 SDK 的 clang++。

详细输出为:

$ $CXX $CXXFLAGS -no-canonical-prefixes -c t.cpp -v

clang version 6.0.0 (git://github.com/llvm-mirror/clang.git ff0c0d8ab3e316bb6e2741fedb3b545e198eab7a) (git://github.com/llvm-mirror/llvm.git 089d4c0c490687db6c75f1d074e99c4d42936a50)
Target: x86_64-poky-linux-musl
Thread model: posix
InstalledDir: /opt/poky-tiny/2.4.2/sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux-musl
Found candidate GCC installation: /opt/poky-tiny/2.4.2/sysroots/core2-64-poky-linux-musl/usr/lib//x86_64-poky-linux-musl/7.3.0
Found candidate GCC installation: /opt/poky-tiny/2.4.2/sysroots/core2-64-poky-linux-musl/usr/lib/gcc/x86_64-poky-linux-musl/7.3.0
Selected GCC installation: /opt/poky-tiny/2.4.2/sysroots/core2-64-poky-linux-musl/usr/lib//x86_64-poky-linux-musl/7.3.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
 "/opt/poky-tiny/2.4.2/sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux-musl/x86_64-poky-linux-musl-clang++" -cc1 -triple x86_64-poky-linux-musl -emit-obj -disable-free -disable-llvm-verifier -discard-value-names -main-file-name t.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mthread-model posix -fmath-errno -mfpmath sse -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu core2 -target-feature +sse3 -dwarf-column-info -debug-info-kind=limited -dwarf-version=4 -debugger-tuning=gdb -momit-leaf-frame-pointer -v -coverage-notes-file /home/kamo7631/t.gcno -rpokyurce-dir /opt/poky-tiny/2.4.2/sysroots/x86_64-pokysdk-linux/usr/bin/lib/clang/6.0.0 -isysroot /opt/poky-tiny/2.4.2/sysroots/core2-64-poky-linux-musl -internal-isystem /opt/poky-tiny/2.4.2/sysroots/core2-64-poky-linux-musl/usr/include/c++/v1 -internal-isystem /opt/poky-tiny/2.4.2/sysroots/core2-64-poky-linux-musl/usr/local/include -internal-isystem /opt/poky-tiny/2.4.2/sysroots/x86_64-pokysdk-linux/usr/bin/lib/clang/6.0.0/include -internal-externc-isystem /opt/poky-tiny/2.4.2/sysroots/core2-64-poky-linux-musl/include -internal-externc-isystem /opt/poky-tiny/2.4.2/sysroots/core2-64-poky-linux-musl/usr/include -O2 -fdeprecated-macro -fdebug-compilation-dir /home/kamo7631 -ferror-limit 19 -fmessage-length 132 -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -o t.o -x c++ t.cpp
clang -cc1 version 6.0.0 based upon LLVM 6.0.0 default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/opt/poky-tiny/2.4.2/sysroots/core2-64-poky-linux-musl/usr/local/include"
ignoring nonexistent directory "/opt/poky-tiny/2.4.2/sysroots/x86_64-pokysdk-linux/usr/bin/lib/clang/6.0.0/include"
ignoring nonexistent directory "/opt/poky-tiny/2.4.2/sysroots/core2-64-poky-linux-musl/include"
#include "..." search starts here:
#include <...> search starts here:
 /opt/poky-tiny/2.4.2/sysroots/core2-64-poky-linux-musl/usr/include/c++/v1
 /opt/poky-tiny/2.4.2/sysroots/core2-64-poky-linux-musl/usr/include
End of search list.
t.cpp:1:10: fatal error: 'xmmintrin.h' file not found
#include <xmmintrin.h>
         ^~~~~~~~~~~~~
1 error generated.

头文件以 sysroots/x86_64-pokysdk-linux/usr/lib/clang/6.0.0/include/xmmintrin.h 的形式存在,但在 sysroots/core2-64-poky-linux-musl 的任何地方都找不到(目标 sysroot)。

为了能够使用 SDK 中的此头文件和其他头文件,我必须进行哪些更改?

【问题讨论】:

    标签: header-files yocto clang++ toolchain


    【解决方案1】:

    请发布输出

    $CLANGCXX $CXXFLAGS -no-canonical-prefixes -c t.cpp -v
    

    我认为问题是 SDK 中的一个错误,其中编译器包含路径正在寻找 编译器头文件但在错误的目录中。也许它指向 sysroots/x86_64-pokysdk-linux/usr/bin/lib/clang/6.0.0/include

    您可以尝试将 -I ${OECORE_NATIVE_SYSROOT}/usr/lib/clang/6.0.0/include 添加到您的编译器命令行中。还要确保您有位于 SDK 安装目录顶部的 SDK 环境脚本的来源,它的名称以“environment-setup-”开头。

    【讨论】:

    • 我已将 -I${OECORE_NATIVE_SYSROOT}/usr/lib/clang/6.0.0/include 添加到我自己的 meta-environment.bbappend 中的编译器调用变量中。谢谢!
    猜你喜欢
    • 2016-04-19
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2010-12-08
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多