簡體   English   中英

在 Yocto 中啟用 php 國際擴展

[英]Enable php intl extension in Yocto

按照這個答案,我將這個內容放入meta-custom-layer/recipes-devtools/php/php_%.bbappend文件中:

PACKAGECONFIG_pn-php = "mysql sqlite3 imap opcache openssl ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 pam', d)} apache2"

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

EXTRA_OECONF =+ " --enable-mbstring --with-openssl --enable-bcmath --enable-sockets --enable-intl \
                  --with-icu-dir=${BASE_WORKDIR}/cortexa7t2hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/icu/62.1-r0/recipe-sysroot-native/usr \
                        
                  , \
                  , icu-native icu"
PACKAGECONFIG ??= "sqlite3"
PACKAGECONFIG[sqlite3] = "--with-sqlite3=${STAGING_LIBDIR}/.. \
                          --with-pdo-sqlite=${STAGING_LIBDIR}/.. \
                          , \
                          ,sqlite3"

LIBS_pn-php =" -lpthread "
export LIBS
THREADS_pn-php = "pthread"
export THREADS

但是在${BASE_WORKDIR}/cortexa7t2hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/icu/62.1-r0下的bitbake icu之后,只有一個包含所有 icu 任務的temp文件夾,但沒有recipe-sysroot-native 我還嘗試在不做任何更改的情況下對bitbake build-sysroots

因此, bitbake php失敗,因為它在該文件夾中找不到預期的文件。

更新

這里的錯誤信息:

檢查 ICU 頭文件和庫的位置...未找到

配置:錯誤:無法檢測ICU前綴或/local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work /cortexa7t2hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/icu/62.1-r0/recipe-sysroot-native/usr/bin/icu-config 失敗。

我在這里找到了icu-config

work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/recipe-sysroot/usr/bin/crossscripts/icu-config

但是因為它試圖 append /bin--with-icu-dir上設置的路徑,所以我無法告訴它在哪里可以找到icu-config

更新2

在遵循@Jussi Kukkonen 的提示后,我得到了這些奇怪的編譯錯誤:

cc1: warning: include location "/usr/include" is unsafe for cross-compilation [-Wpoison-system-directories]
cc1: warning: include location "/usr/include" is unsafe for cross-compilation [-Wpoison-system-directories]
In file included from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/Zend/../TSRM/TSRM.h:52,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/Zend/zend_portability.h:49,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/Zend/zend_types.h:27,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/Zend/zend.h:29,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/main/php.h:35,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/ext/intl/dateformat/../php_intl.h:23,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/ext/intl/dateformat/dateformat_format.c:21:
/usr/include/pthread.h:681:6: warning: 'regparm' attribute directive ignored [-Wattributes]
      __cleanup_fct_attribute;
      ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pthread.h:693:3: warning: 'regparm' attribute directive ignored [-Wattributes]
   __cleanup_fct_attribute;
   ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pthread.h:716:6: warning: 'regparm' attribute directive ignored [-Wattributes]
      __cleanup_fct_attribute;
      ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pthread.h:729:3: warning: 'regparm' attribute directive ignored [-Wattributes]
   __cleanup_fct_attribute;
   ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pthread.h:738:6: warning: 'regparm' attribute directive ignored [-Wattributes]
      ;
      ^
cc1: warning: include location "/usr/include" is unsafe for cross-compilation [-Wpoison-system-directories]
In file included from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/Zend/../TSRM/TSRM.h:52,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/Zend/zend_portability.h:49,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/Zend/zend_types.h:27,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/Zend/zend.h:29,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/main/php.h:35,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/ext/intl/php_intl.h:23,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/ext/intl/dateformat/dateformat_parse.c:24:
/usr/include/pthread.h:681:6: warning: 'regparm' attribute directive ignored [-Wattributes]
      __cleanup_fct_attribute;
      ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pthread.h:693:3: warning: 'regparm' attribute directive ignored [-Wattributes]
   __cleanup_fct_attribute;
   ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pthread.h:716:6: warning: 'regparm' attribute directive ignored [-Wattributes]
      __cleanup_fct_attribute;
      ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pthread.h:729:3: warning: 'regparm' attribute directive ignored [-Wattributes]
   __cleanup_fct_attribute;
   ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pthread.h:738:6: warning: 'regparm' attribute directive ignored [-Wattributes]
      ;
      ^
In file included from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/Zend/../TSRM/TSRM.h:52,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/Zend/zend_portability.h:49,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/Zend/zend_types.h:27,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/Zend/zend.h:29,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/main/php.h:35,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/ext/intl/php_intl.h:23,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/ext/intl/msgformat/msgformat.c:24:
/usr/include/pthread.h:681:6: warning: 'regparm' attribute directive ignored [-Wattributes]
      __cleanup_fct_attribute;
      ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pthread.h:693:3: warning: 'regparm' attribute directive ignored [-Wattributes]
   __cleanup_fct_attribute;
   ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pthread.h:716:6: warning: 'regparm' attribute directive ignored [-Wattributes]
      __cleanup_fct_attribute;
      ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pthread.h:729:3: warning: 'regparm' attribute directive ignored [-Wattributes]
   __cleanup_fct_attribute;
   ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pthread.h:738:6: warning: 'regparm' attribute directive ignored [-Wattributes]
      ;
      ^
In file included from /usr/include/math.h:472,
                 from /local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/ext/intl/dateformat/dateformat_parse.c:22:
/local/STM32MP15-Ecosystem-v1.0.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-02-20/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/php/7.2.10-r0/php-7.2.10/ext/intl/dateformat/dateformat_parse.c: In function 'zif_datefmt_parse':
/usr/include/bits/mathinline.h:751:3: error: invalid 'asm': invalid operand for code 'w'
   __asm __volatile ("fnstcw %3\n\t"           \
   ^~~~~
/usr/include/bits/mathinline.h:503:5: note: in definition of macro '__inline_mathcodeNP_'
     code;              \
     ^~~~
/usr/include/bits/mathinline.h:746:1: note: in expansion of macro '__inline_mathcodeNP'
 __inline_mathcodeNP (floor, __x, \
 ^~~~~~~~~~~~~~~~~~~
/usr/include/bits/mathinline.h:769:3: error: invalid 'asm': invalid operand for code 'w'
   __asm __volatile ("fnstcw %3\n\t"           \
   ^~~~~
/usr/include/bits/mathinline.h:503:5: note: in definition of macro '__inline_mathcodeNP_'
     code;              \
     ^~~~
/usr/include/bits/mathinline.h:764:1: note: in expansion of macro '__inline_mathcodeNP'
 __inline_mathcodeNP (ceil, __x, \
 ^~~~~~~~~~~~~~~~~~~
{standard input}: Assembler messages:
{standard input}:463: Error: bad instruction `fnstcw [sp,#16]'
{standard input}:464: Error: bad instruction `movzwl [sp,#16],r3'
{standard input}:465: Error: bad instruction `andl $0xf3ff,r3'
{standard input}:466: Error: bad instruction `orl $0x0400,r3'
{standard input}:467: Error: ARM register expected -- `movw ,[sp,#18]'
{standard input}:468: Error: bad instruction `fldcw [sp,#18]'
{standard input}:469: Error: bad instruction `frndint'
{standard input}:470: Error: bad instruction `fldcw [sp,#16]'
{standard input}:685: Error: bad instruction `fnstcw [sp,#16]'
{standard input}:686: Error: bad instruction `movzwl [sp,#16],r3'
{standard input}:687: Error: bad instruction `andl $0xf3ff,r3'
{standard input}:688: Error: bad instruction `orl $0x0800,r3'
{standard input}:689: Error: ARM register expected -- `movw ,[sp,#18]'
{standard input}:690: Error: bad instruction `fldcw [sp,#18]'
{standard input}:691: Error: bad instruction `frndint'
{standard input}:692: Error: bad instruction `fldcw [sp,#16]'
Makefile:1007: recipe for target 'ext/intl/dateformat/dateformat_parse.lo' failed
make: *** [ext/intl/dateformat/dateformat_parse.lo] Error 1
make: *** Waiting for unfinished jobs....
ERROR: oe_runmake failed
WARNING: exit code 1 from a shell command.
ERROR: Function failed: do_compile 

所以這就是我要嘗試的方法(我不是 php 專家,構建似乎需要很長時間,以至於我自己沒有在目標上進行測試)。 以下創建一個新的 packageconfig

PACKAGECONFIG[intl] = "--enable-intl,--disable-intl,icu"

php 實際上支持 pkg-config 所以它應該只找到 icu 。 至少在 Yocto Warrior 上配置工作正常:php 找到 icu 並啟用 intl。

通過該添加,您可以將“intl”添加到您的 PACKAGECONFIG 行(並刪除“_pn-php”后綴:它在配方文件或 bbappend 中沒有用):

PACKAGECONFIG = "intl mysql sqlite3 imap opcache openssl ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 pam', d)} apache2"

您還應該能夠刪除 EXTRA_OECONF 怪物。 當您使用它時,可能會刪除所有 sqlite3 行,除非您知道您確實需要它們(據我所知,它們已經在所有維護的 yocto 版本中)。 所以刪除這些:

EXTRA_OECONF =+ " --enable-mbstring --with-openssl --enable-bcmath --enable-sockets --enable-intl \
                  --with-icu-dir=${BASE_WORKDIR}/cortexa7t2hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi/icu/62.1-r0/recipe-sysroot-native/usr \

                  , \
                  , icu-native icu"
PACKAGECONFIG ??= "sqlite3"
PACKAGECONFIG[sqlite3] = "--with-sqlite3=${STAGING_LIBDIR}/.. \
                          --with-pdo-sqlite=${STAGING_LIBDIR}/.. \
                          , \
                          ,sqlite3"

說實話,剩下的幾行似乎也沒什么用,但也許它們並不是有害的。

PHP 7.2.1 配方有問題。 如果您在圖層的“thud”分支上,那么您可能需要切換到“warrior”分支並重新運行bitbake php -v命令或將 php 7.3.x 的配方 + 文件復制到 ZE19344AC 目錄中從這里https://github.com/openembedded/meta-openembedded/tree/master/meta-oe/recipes-devtools/php

此外,Jussi Kukkonen 是正確的,因為您可以只使用 PACKAGECONFIG 選項。 您的里程會因您想要的 php 的第三方庫而異,但我認為這里的問題是配方。 我得到了 php 使用以下方法在 thud 和 Warriors 分支上工作:

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

EXTRA_OECONF =+ " --enable-mbstring --with-openssl=${STAGING_DIR_TARGET}${exec_prefix} --enable-bcmath --enable-sockets --enable-intl \
                      , \
                      , icu-native icu"
PACKAGECONFIG ??= "intl sqlite3"
PACKAGECONFIG[sqlite3] = "--with-openssl=${STAGING_DIR_TARGET}${exec_prefix} \
              --with-sqlite3=${STAGING_LIBDIR}/.. \
                          --with-pdo-sqlite=${STAGING_LIBDIR}/.. \
                          , \
                          ,sqlite3"

LIBS_pn-php =" -lpthread "
export LIBS
THREADS_pn-php = "pthread"
export THREADS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM