Hello everyone, Short version:
I have an 64 bit Yocto Raspberry build with a piece of 32 bit software with multilib. The goal is now to be able to use the eSDK to build 32 bit software for that system. After building and installing the eSDK there are even two files environment-setup-aarch64-poky-linux and environment-setup-armv7ve-vfp-pokymllib32-linux-gnueabi. After sourcing the 32bit armv7ve environment file, devtool is still building my software as 64 bit. Why doesn't it work? Long version: The multilib definition in my local config looks like this: require conf/multilib.conf MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "armv7ve" IMAGE_INSTALL_append_raspberrypi3-64 = " lib32-software-dummy" The software-dummy "hello world" project builds fine in 32 bit. Now on to the eSDK: The environment-setup-armv7ve-vfp-pokymllib32-linux-gnueabi actually didn't work out of the box, I needed to add the bottom of environment-setup-aarch64-poky-linux to environment-setup-armv7ve-vfp-pokymllib32-linux-gnueabi, so devtool is found. This part was missing from the armv7ve environment file: . /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 Another thing I noticed that SDKTARGETSYSROOT in both files point to /workdir/sdk/rpi/tmp/sysroots/raspberrypi3-64 which is maybe not correct. Also not very sure about DEPLOY_DIR_IMAGE. Eg. in environment-setup-aarch64-poky-linux we have: 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- while in 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- After sourcing the armv7ve environment file, building the software I added with devtool, it's still building in 64 bit. Looking at the run.do_install logfile I see this: 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" for some reason it's all 64 bit in there and I don't know where this comes from. The armv7ve environment file also has /workdir/sdk/rpi/tmp/sysroots/x86_64/usr/bin/arm-pokymllib32-linux-gnueabi in it's PATH, where the 32 bit compilers seem to live. The only way I found to build my software is to build a little script that calls bitbake directly or to add IMAGE_INSTALL_append_raspberrypi3-64 = " lib32-cmake-test" to the local.config and build the image with devtool. Both are not nice solutions. Thank you for any help! Regards, - Michael -- -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto