Yocto 不会将 libphp7.so 复制到 rootfs



要在Yocto中添加php apache2模块,我创建了一个包含以下内容的文件recipes-devtools/php/php_%.bbappend

PACKAGECONFIG = " mysql sqlite3 imap opcache openssl ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 pam', d)} apache2"
LIBS_pn-php =" -lpthread "
export LIBS
THREADS_pn-php = "pthread"
export THREADS

模块已构建,但文件tmp-glibc/sysroots-components/cortexa7hf-neon-vfpv4/php/usr/lib/apache2/modules/libphp7.so未复制到 rootfs (/usr/lib/apache2/modules/(。

  1. 为什么它不部署文件?
  2. 作为临时解决方法(并学习如何处理Yocto的路径(,我正在尝试使用ROOTFS_POSTPROCESS_COMMAND手动部署它。为了避免绝对路径,我应该使用什么变量来找出tmp-glibc输出目录下的上述文件?像这样:

    ${TMPDIR}/sysroots-components/cortexa7hf-neon-vfpv4/php/usr/lib/apache2/modules/libphp7.so

还是有更好的东西?

在Yocto中,文件(安装在${D}中,可以手动do_install,也可以通过make,cmake,autotools等...do_compile(与FILES_foo中包含的正则表达式(或glob,不完全确定(之一匹配时,将它们放入包中

一个配方可以(并且通常确实(提供多个包装。因此,您将有多个FILES_foo1,它们有自己的路径要匹配。

在Yocto中,文件被放在第一个包中,其中FILE_foo中的路径之一与文件匹配。即使文件与其他包的路径匹配,它也只会在一个包中,即第一个包。

FWIW,包在配方PACKAGES变量中从最左到最右创建。默认情况下,PACKAGES 变量是${PN}-src ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}(c.f. http://git.yoctoproject.org/cgit.cgi/poky/tree/meta/conf/bitbake.conf#n292(。

默认的FILES_*变量也在bitbake.conf中定义,c.f. http://git.yoctoproject.org/cgit.cgi/poky/tree/meta/conf/bitbake.conf。查找以FILES_开头的所有内容。

在那里,您可以看到默认情况下,FILES_${PN}打包了${libdir}/lib*${SOLIBS}(c.f. http://git.yoctoproject.org/cgit.cgi/poky/tree/meta/conf/bitbake.conf#n296(。 默认情况下,SOLIBS.so.*(c.f. http://git.yoctoproject.org/cgit.cgi/poky/tree/meta/conf/bitbake.conf#n280(,这意味着只有点版本的库打包在${PN}包中(如果它们之前未与另一个包匹配(。 另一方面,FILES_${PN}-dev${FILES_SOLIBSDEV}默认为${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}SOLIBSDEV依次默认为.so(c.f. http://git.yoctoproject.org/cgit.cgi/poky/tree/meta/conf/bitbake.conf#n313、http://git.yoctoproject.org/cgit.cgi/poky/tree/meta/conf/bitbake.conf#n314 和 http://git.yoctoproject.org/cgit.cgi/poky/tree/meta/conf/bitbake.conf#n283(。 请注意,库文件名应全部以lib开头,以便能够与默认FILES_*匹配。

TL;DR:默认情况下,lib*.so.*FILES_${PN}lib*.soFILES_${PN}-dev

对于您的特定问题,您可以看到${libdir}/apache2目录被打包在php-modphp中,这要归功于FILES_${PN}-modphp(c.f. http://git.openembedded.org/meta-openembedded/tree/meta-oe/recipes-devtools/php/php.inc#n243(。

因此,您需要将php-modphp(假设${PN}解析为php(添加到映像中,以便能够在rootfs中安装库。

最新更新