【问题标题】:glib build failure after adding Y2038 glibc patches添加 Y2038 glibc 补丁后 glib 构建失败
【发布时间】:2018-11-07 15:24:27
【问题描述】:

我面临一个 IMX7 Yocto 构建失败的问题,我们添加了 Y2038 问题修复补丁 在 glibc 中,之后当我们使用 bitbake 构建时,我们在其他模块中遇到构建错误,但是 glibc 没有失败。

./.libs/g-ir-编译器: /data/server/tmp/fsl-community-bsp/build/tmp/work/cortexa7hf-neon-jupiter-linux-gnueabi/gobject-introspection/1.48.0-r0/build/.libs/libgirepository-1.0.so。 1: 没有可用的版本信息(需要 /data/server/tmp/fsl-community-bsp/build/tmp/sysroots/imx7dsabresd-jupiter//usr/lib/libgio-2.0.so.0) ./.libs/g-ir-compiler: /data/server/tmp/fsl-community-bsp/build/tmp/work/cortexa7hf-neon-jupiter-linux-gnueabi/gobject-introspection/1.48.0-r0/build/.libs/libgirepository-1.0.so。 1: 没有可用的版本信息(需要 /data/server/tmp/fsl-community-bsp/build/tmp/sysroots/imx7dsabresd-jupiter//usr/lib/libgio-2.0.so.0) ./.libs/g-ir-compiler:符号查找错误: /data/server/tmp/fsl-community-bsp/build/tmp/sysroots/imx7dsabresd-jupiter//usr/lib/libglib-2.0.so.0: 未定义符号:pcre_free ./.libs/g-ir-compiler:符号查找 错误: /data/server/tmp/fsl-community-bsp/build/tmp/sysroots/imx7dsabresd-jupiter//usr/lib/libglib-2.0.so.0: 未定义符号:pcre_free ./.libs/g-ir-compiler:符号查找 错误: /data/server/tmp/fsl-community-bsp/build/tmp/sysroots/imx7dsabresd-jupiter//usr/lib/libglib-2.0.so.0: 未定义符号:pcre_free ./.libs/g-ir-compiler:符号查找 错误: /data/server/tmp/fsl-community-bsp/build/tmp/sysroots/imx7dsabresd-jupiter//usr/lib/libglib-2.0.so.0: 未定义符号:pcre_free 如果上面的错误信息是关于 缺少 .so 库,然后在 食谱应该有帮助。 (通常像这样: GIR_EXTRA_LIBS_PATH="${B}/something/.libs" ) make[2]: *** [gir/libxml2-2.0.typelib] 错误 1

我们将不胜感激。

【问题讨论】:

    标签: glibc


    【解决方案1】:

    我认为将这两个补丁向后移植到核心可能会有所帮助

    glib-2.0

    libpcre

    【讨论】:

    • 您好 Khem,感谢您的回复,我们已经准备好这两个补丁。如果我们不添加 gobject-introspection 补丁,则不会出现构建失败。仅当我们在 glibc 中添加一个补丁以更改时间 api 以使用 64 位时间 api 时才会发生此构建失败 没有上述修改构建是可以的,在 glibc 中我们将时间相关变量替换为使用 64 位变量,glibc 构建成功但仅当它尝试构建 gobject-introspection 然后失败,没有 gobject-introspection 构建是可以的。请提供一些调试和修复此构建问题的指示。
    • -- a/bits/stat.h +++ b/bits/stat.h @@ -48,10 +48,​​17 @@ struct stat #else __off64_t st_size; /* 文件大小,以字节为单位。 /#endif - +#ifdef Y2038 __time_t st_atime; / 上次访问时间。 /__time_t st_mtime; / 最后修改时间。 /__time_t st_ctime; / 上次状态更改的时间。 / +#else + __time64_t st_atime; / 上次访问时间。 / + __time64_t st_mtime; / 最后修改时间。 / + __time64_t st_ctime; / 上次状态更改的时间。 */ +#endif
    • +++ b/bits/time.h +#ifdef Y2038 struct timeval { __time_t tv_sec; /* 秒。 / __suseconds_t tv_usec; / 微秒。 /}; +#else +struct timeval +{ + __time64_t tv_sec; / 秒。 / + __int64_t tv_usec; / 微秒。 */ +}; +#endif
    • +++ b/bits/types.h @@ -137,6 +137,9 @@ __STD_TYPE __RLIM_T_TYPE __rlim_t; /* 资源测量类型。 / __STD_TYPE __RLIM64_T_TYPE __rlim64_t; / 用于资源测量 (LFS) 的类型。 / __STD_TYPE __ID_T_TYPE __id_t; / ID 的通用类型。 / __STD_TYPE __TIME_T_TYPE __time_t; / 自纪元以来的秒数。 / + +__STD_TYPE __TIME64_T_TYPE __time64_t; / 自纪元以来的秒数,Y2038 安全。 */
    • +++ b/bits/typesizes.h @@ -61,6 +61,8 @@ #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE #define __CPU_MASK_TYPE __ULONGWORD_TYPE +#define __TIME64_T_TYPE __SQUAD_TYPE +
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多