【问题标题】:Yocto recipe for the PostgreSQL ODBC and ARM platformPostgreSQL ODBC 和 ARM 平台的 Yocto 配方
【发布时间】:2016-06-14 22:56:52
【问题描述】:

我正在尝试为 ARM 平台编写 BitBake unixodbc、postgresql 和 psqlodbc 配方,以与 Yocto 项目集成。首先,我为 unixodbc 和 postgresql 编写了自定义 BitBake 食谱。正如预期的那样,这些配方为 ARM 平台构建和打包 lib 和 bin。

现在我正在尝试为 PostgreSQL 的官方 ODBC 驱动程序 (psqlodbc) 编写一个配方。 psqlodbc 配置任务需要为本地 (x86) 平台编译的“odbc_config”工具(--with-unixodbc 标志)才能正常执行 do_configure 任务。该“odbc_config”工具是由我为 ARM 平台(如预期)定制的 unixodbc 配方构建的,但不适用于本机平台 (x86):

$ 文件 /path/to/tmp/work/armplatform/unixodbc/2.3.1-r0/image/usr/bin/odbc_config /path/to/tmp/work/armplatform/unixodbc/2.3.1-r0/image/usr/bin/odbc_config:ELF 32 位 LSB 可执行文件,ARM,EABI5 版本 1 (SYSV),动态链接(使用共享库) ,对于 GNU/Linux 2.6.32,BuildID[sha1]=06728a67598eca297d7dcf83cf15a020c74d11ce,未剥离

问题是当我的 psqlodbc 配方尝试使用我的 unixodbc 配方生成的“odbc_config”时,任务 do_configure 失败并显示以下错误消息:

/path/to/tmp/work/armplatform/psqlodbc/09.03.0210-r0/psqlodbc-09.03.0210/configure:第4272行:/path/to/tmp/work/armplatform/unixodbc/2.3.1- r0/image/usr/bin/odbc_config:无法执行二进制文件:执行格式错误

如何使用 BitBake 食谱妥善管理这种情况?

【问题讨论】:

  • 仅供参考,您不需要为 unixodbc 和 postgresql 编写自定义配方,它们可在 Openembedded layer index 上找到。也许这会修复你的Exec format error
  • 我做这个任务是为了教育目的,但是提供的 URL 很有用,因为我没有在谷歌上找到这个信息,它澄清了很多概念。谢谢分享!

标签: postgresql yocto bitbake psqlodbc


【解决方案1】:

在分析了 LightenS 提供的链接(谢谢!)后,我明白了解决问题的正确方法。关键问题是将这个变量定义到我的 unixodbc 配方中:

BBCLASSEXTEND = "native nativesdk" 

完成之后,您可以构建这个 unixodbc 配方变体:

$ bitbake nativesdk-unixodbc

这会生成 odbc_config 二进制文件以在 MACHINESDK 平台上运行。之后,您可以使用以下命令自定义 psqlodbc 配方配置:

EXTRA_OECONF += " \ 
    --with-sysroot=${STAGING_DIR_TARGET} \
    --with-unixodbc=${STAGING_DIR_NATIVE}/usr \
    --enable-shared \
"

其中 --with-unixodbc 指向 odbc_config 的本机 (x86) 二进制文件,而 --with-sysroot 指向目标 sysroot。这足以正确构建 psqlodbc 配方的包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多