- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Yocto (THUD) 为 imx6 处理器构建自定义镜像。使用图像,我创建了一个 QT 应用程序的配方和一个使用 cmake 构建的 c++ 库的配方。
我正在考虑为该图像构建 SDK。我希望 SDK 允许交叉编译,但也要编译 QT 应用程序,以便它可以在主机 (SDKMACHINE) 上运行。交叉编译部分就像一个魅力。这是关于构建 QT 应用程序以在我遇到问题的主机上运行的部分。
首先,这是库的配方:
SRC_URI = "file://LibName"
inherit cmake
S = "${WORKDIR}"
FILES_${PN} += "${includedir}/*.h ${includedir}/"
BBCLASSEXTEND = "native nativesdk"
do_configure() {
cmake ../LibName/src
}
do_install() {
install -d ${D}${libdir}
install -m 0755 ${S}/build/libLibName.so ${D}${libdir}/libLibName.so.0
ln -s libLibName.so.0 ${D}${libdir}/libLibName.so
install -m 0755 ${S}/build/libLibName.a ${D}${libdir}
install -d ${D}${includedir}/LibName/
cp -r ${S}/LibName/includes ${D}${includedir}/LibName/
install -d ${D}${includedir}/LibName/src
rsync -a --include='*.h' --include='*/' --exclude='*' ${S}/LibName/src/ ${D}${includedir}/LibName/src
}
在我的图像配方文件中,我添加了:
TOOLCHAIN_HOST_TASK += "nativesdk-lib-name"
然后我使用以下方法构建 SDK:
bitbake -c populate_sdk custom-iamge-recipe
我的问题是生成的 SDK 没有我期望在 native sysroot 中包含的文件。我期待我的 native sysroot (/opt/fslc-x11/2.6.2/sysroots/x86_64-fslcsdk-linux/usr/include) 将包含 C++ 库包含文件,就像目标 sysroot (/opt/fslc-x11/2.6.2/sysroots/armv7at2hf-neon-fslc-linux-gnueabi)。
我不明白的另一件事是 native sysroot 包含库 (libLibName.so.0),但不包含符号链接(symbolic link) (libLibName.so)。我原以为符号链接(symbolic link)会像在目标 sysroot 中一样出现。
这是我现在拥有的:
/opt/fslc-x11/2.6.2/sysroots
├── armv7at2hf-neon-fslc-linux-gnueabi/usr
│ ├── include
│ │ └── LibName
│ │ └── include files
│ └── lib
│ ├── libLibName.so.0
│ └── libLibName.so
└── x86_64-fslcsdk-linux/usr
└── lib
└── libLibName.so.0
这是我想要的:
/opt/fslc-x11/2.6.2/sysroots
├── armv7at2hf-neon-fslc-linux-gnueabi/usr
│ ├── include
│ │ └── LibName
│ │ └── include files
│ └── lib
│ ├── libLibName.so.0
│ └── libLibName.so
└── x86_64-fslcsdk-linux/usr
├── include
│ └── LibName
│ └── include files
└── lib
├── libLibName.so.0
└── libLibName.so
在此先感谢您的帮助,非常感谢!
最佳答案
PACKAGES
变量已定义 here作为:
PACKAGES = "${PN}-src ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}"
因此,当 Yocto 从配方中打包文件时,它会将它们包含在 PACKAGES
顺序中,在这种情况下,头文件包含在 ${PN}-dev
之前包含在 ${PN}
中:
FILES_${PN}-dev = "${includedir} ..."
要将 header 添加到您的 SDK,您可以添加 -dev
包:
TOOLCHAIN_HOST_TASK += "nativesdk-lib-name nativesdk-lib-name-dev"
请注意,您也可以这样重新定义 PACKAGES
变量:
PACKAGES = "${PN}"
让你的线路工作:FILES_${PN} += "${includedir}/*.h ${includedir}/"
关于c++ - 执行 populate_sdk 时如何使用 yocto 在 native sysroot 中安装文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57576746/
如何在 Yocto 中包含 linux 内核头文件作为 SDK 包的一部分? 我在嵌入式项目中使用 Yocto 1.8 (fido) 并想做树外内核模块开发。目前,我可以通过指向我的 $KERNEL_
我正在尝试使用 yocto 生成 SDK。 硬件:x64 通用元英特尔层 图像:核心图像最小。 我在 conf 文件中启用了 multilib 以支持 32 位库。 require conf/mult
我正在使用 Yocto (THUD) 为 imx6 处理器构建自定义镜像。使用图像,我创建了一个 QT 应用程序的配方和一个使用 cmake 构建的 c++ 库的配方。 我正在考虑为该图像构建 SDK
我是一名优秀的程序员,十分优秀!