在 Yocto 构建中添加 php-curl

Adding php-curl in a Yocto build

我一直在使用 Yocto 和 wpewebkit 构建自定义图像以在 docker 中使用。我需要 运行 一个带有 php 的本地网络服务器,我已经完成了没问题。我需要在我的项目中使用 curl,并且安装了 apache2、php、modphp 和 curl。我只需要 php-curl 但我找不到如何安装它。有谁知道我如何或是否可以这样做?我已经竭尽全力在谷歌上搜索多个短语,但我只找到了如何使用 apt-get 或 yum 安装 php-curl,或者我得到了指向我可以访问的 meta-* 目录的链接仍然构建文件。

如果有帮助的话,这个自定义图像是基于 GitHub 上的以下项目提供的图像:https://github.com/resin-io-playground/resin-wpe/tree/master/base-image。我已经与开发人员交谈过,他们对 PHP 的了解有限。

编辑 #1:到目前为止的进展,必须更新 curl.bb 文件以正确包含 libcurl-dev,然后按照@pmod 的建议将 curl 合并到 php 建造。一切似乎 运行 没问题,直到我收到以下错误:

| ../php-7.1.9/configure: line 386: test: please: integer expression expected
| configure: error: reinstall
| ../php-7.1.9/configure: line 275: return: please: numeric argument required
| ../php-7.1.9/configure: line 285: exit: please: numeric argument required
| NOTE: The following config.log files may provide further information.
| NOTE: /base-image/build/tmp-glibc/work/x86_64-linux/php-native/7.1.9-r0/build/config.log
| ERROR: configure failed
| WARNING: /base-image/build/tmp-glibc/work/x86_64-linux/php-native/7.1.9-r0/temp/run.do_configure.29590:1 exit 1 from 'exit 1'
| ERROR: Function failed: do_configure (log file is located at /base-image/build/tmp-glibc/work/x86_64-linux/php-native/7.1.9-r0/temp/log.do_configure.29590)
ERROR: Task (virtual:native:/base-image/build/../meta-openembedded/meta-oe/recipes-devtools/php/php_7.1.9.bb:do_configure) failed with exit code '1'

编辑 #2:我已经添加了我遗漏的所有内容。我在上面遇到了同样的错误,php 构建期间的函数 do_configure 失败了。我在下面发布了我确保 curl.bb 文件中的内容(我必须添加此内容)、我的 php.inc 文件中的内容以及位于暂存目录中的 curl 文件。

curl.bb:

PACKAGES =+ "lib${BPN} lib${BPN}-native lib${BPN}-dev lib${BPN}-dev-native"

FILES_lib${BPN} = "${libdir}/lib*.so.*"

FILES_lib${BPN}-dev = "${includedir} \
                       ${libdir}/lib*.so \
                       ${libdir}/lib*.a \
                       ${libdir}/lib*.la \
                       ${libdir}/pkgconfig \
                       ${datadir}/aclocal \
                       ${bindir}/*-config"

php.inc:

EXTRA_OECONF_append = " --with-curl=${libdir}/.."
DEPENDS_${PN} += "libcurl-dev libcurl-dev-native"

PHP 暂存目录:

/installeddeps/curl-native
/installeddeps/curl-native.b77f37db31cf2391919a12c5c9774bff
/installeddeps/curl-native.complete
/usr/share/aclocal/libcurl.m4
/usr/bin/curl-config
/usr/bin/crossscripts/curl-config
/usr/bin/curl
/usr/lib/pkgconfig/libcurl.pc
/usr/lib/libcurl.so
/usr/lib/libcurl.a
/usr/lib/libcurl.so.4.4.0
/usr/lib/libcurl.so.4
/usr/include/curl
/usr/include/curl/curl.h
/usr/include/curl/curlrules.h
/usr/include/curl/curlbuild.h
/usr/include/curl/curlver.h
/usr/include/curl/easy.h

根据 php manual,PHP/cURL 功能在 php 配置阶段启用 --with-curl=[dir] 选项.

我检查了主配方包含文件 php.inc,但找不到这样的配置选项。因此,尝试在您的工作层 php_%.bbappend 文件中创建(或将其直接添加到 php.inc[= 的底部26=] 测试):

EXTRA_OECONF_append_class-target = " --with-curl=${STAGING_LIBDIR}/.."
DEPENDS_append_class-target = " curl"

请注意,curl 包在 DEPENDS 中,因为在构建阶段需要它。

我认为您不需要使用 PACKAGES 和 FILES 更新 curl 配方,pkg_config 应该注意