Yocto-使用可扩展的SDK和multilib

时间:2019-07-13 19:33:19

标签: architecture sdk yocto

简短版本:

我有一个64位的Yocto Raspberry构建,带有一个带multilib的32位软件。现在的目标是能够使用eSDK为该系统构建32位软件。构建和安装eSDK之后,甚至还有两个文件environment-setup-aarch64-poky-linuxenvironment-setup-armv7ve-vfp-pokymllib32-linux-gnueabi。在采购32位armv7ve环境文件devtool之后,我的软件仍以64位构建。为什么不起作用?

长版:

我的local配置中的 multilib定义如下:

require conf/multilib.conf
MULTILIBS = "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 = "armv7ve"
IMAGE_INSTALL_append_raspberrypi3-64 = " lib32-software-dummy"

software-dummy“ hello world”项目可以在32位上正常构建。

现在进入eSDK: environment-setup-armv7ve-vfp-pokymllib32-linux-gnueabi实际上开箱即用,我需要将environment-setup-aarch64-poky-linux的底部添加到environment-setup-armv7ve-vfp-pokymllib32-linux-gnueabi,因此找到devtool

armv7ve环境文件中缺少此部分:

. /workdir/sdk/rpi/buildtools/environment-setup*
export OE_SKIP_SDK_CHECK=1
export DEPLOY_DIR_IMAGE=/workdir/sdk/rpi/tmp/deploy/images/raspberrypi3-64
export PATH=/workdir/sdk/rpi/sysroots/x86_64-pokysdk-linux/usr/bin:$PATH
printf 'SDK environment now set up; additionally you may now run devtool to perform development tasks.
Run devtool --help for further details.
'
(which bitbake > /dev/null 2>&1 && echo 'WARNING: attempting to use the extensible SDK in an environment set up to run bitbake - this may lead to unexpected results. Please source this script in a new shell session instead.') || true

否则,我相信环境文件看起来还可以。

例如。在environment-setup-aarch64-poky-linux中,我们有:

export CC="aarch64-poky-linux-gcc  --sysroot=$SDKTARGETSYSROOT"
export CXX="aarch64-poky-linux-g++  --sysroot=$SDKTARGETSYSROOT"
…
export ARCH=arm64
export CROSS_COMPILE=aarch64-poky-linux-

environment-setup-armv7ve-vfp-pokymllib32-linux-gnueabi期间:

export CC="arm-pokymllib32-linux-gnueabi-gcc  -march=armv7ve -mfpu=vfp -mfloat-abi=softfp --sysroot=$SDKTARGETSYSROOT"
export CXX="arm-pokymllib32-linux-gnueabi-g++  -march=armv7ve -mfpu=vfp -mfloat-abi=softfp --sysroot=$SDKTARGETSYSROOT"
…
export ARCH=arm
export CROSS_COMPILE=arm-pokymllib32-linux-gnueabi-

在采购armv7ve环境文件之后,构建了我用devtool添加的软件,它仍在64位中构建。查看run.do_install日志文件,我看到了:

export AR="aarch64-poky-linux-ar"
export AS="aarch64-poky-linux-as "
…
export CC="aarch64-poky-linux-gcc  -fstack-protector-strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/workdir/sdk/rpi/tmp/work/aarch64-poky-linux/cmake-test/1.0-r0/recipe-sysroot"
…
export CCLD="aarch64-poky-linux-gcc  -fstack-protector-strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/workdir/sdk/rpi/tmp/work/aarch64-poky-linux/cmake-test/1.0-r0/recipe-sysroot"

由于某种原因,它全部都是64位的,我不知道它来自哪里。 armv7ve环境文件的PATH中也包含/workdir/sdk/rpi/tmp/sysroots/x86_64/usr/bin/arm-pokymllib32-linux-gnueabi,32位编译器似乎位于其中。

谢谢您的帮助!

0 个答案:

没有答案
相关问题