我有一个64位的Yocto Raspberry构建,带有一个带multilib的32位软件。现在的目标是能够使用eSDK为该系统构建32位软件。构建和安装eSDK之后,甚至还有两个文件environment-setup-aarch64-poky-linux
和environment-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位编译器似乎位于其中。
谢谢您的帮助!