PostgreSQL ODBC和ARM平台的Yocto配方

时间:2016-03-02 07:47:25

标签: postgresql yocto bitbake psqlodbc

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

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

$ file /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:line 4272:/path/to/tmp/work/armplatform/unixodbc/2.3.1- r0 / image / usr / bin / odbc_config:无法执行二进制文件:exec格式错误

如何使用BitBake配方正确管理这种情况?

1 个答案:

答案 0 :(得分: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配方的包。