如何制作完整的Yocto eSDK Sysroot进行CMake交叉编译?

时间:2019-07-02 16:00:49

标签: cross-compiling yocto openembedded imx6 yocto-esdk

我正在尝试交叉编译CMake / C ++项目,以部署到Variscite的SoM i.MX6 DART板上。他们在飞思卡尔Linux上使用Yocto(因此,您将在下面看到的fsl-image-gui)。我一直在阅读eSDK,一段时间以来一直困惑/迷惑于问题。这是问题所在...如何获得完整/非局部 Yocto eSDK sysroot + toolchain,以便可以使用它进行CMake交叉编译?其他SO帖子为我提供了部分帮助,提供了一些您将在下面看到的命令,但是sysroot仍然完整。这就是我想要做的...

首先,我运行以下命令:

# Following http://variwiki.com/index.php?title=Yocto_Build_Release&release=RELEASE_THUD_V1.0_VAR-SOM-MX6
mkdir -p ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH
mkdir ~/var-fslc-yocto
cd ~/var-fslc-yocto
repo init -u https://github.com/varigit/variscite-bsp-platform.git -b thud
repo sync -j4
MACHINE=var-som-mx6 DISTRO=fslc-framebuffer . setup-environment build_fb
echo 'TOOLCHAIN_HOST_TASK_append = "${SDK_EXTRA_TOOLS}"' >> conf/local.conf
echo 'SDK_EXTRA_TOOLS = " nativesdk-cmake     "' >> conf/local.conf
bitbake fsl-image-gui
bitbake -c populate_sdk_ext fsl-image-gui
cd tmp/deploy/sdk
./fslc-framebuffer-glibc-x86_64-fsl-image-gui-armv7at2hf-neon-toolchain-ext-2.6.2.sh
# Get a new shell (clears the environment variables set by the "MACHINE ..." command you ran above)
exit
ssh username@ubuntu-machine
cd ~/fslc-framebuffer_sdk
source ./environment-setup-armv7at2hf-neon-fslc-linux-gnueabi
devtool add lcm https://github.com/lcm-proj/lcm/archive/v1.4.0.tar.gz
# Edit the autogenerated recipe in an editor.
# Change the EXTRA_OECMAKE variable line to...
# EXTRA_OECMAKE = "-DLCM_ENABLE_EXAMPLES=OFF -DLCM_ENABLE_TESTS=OFF"
devtool edit-recipe lcm
devtool build lcm
devtool build-image fsl-image-gui

由于有SDK_EXTRA_TOOLSnativesdk-cmake行,因此eSDK确实在~/fslc-framebuffer_sdk/sysroots/x86_64-fslcsdk-linux/usr/share/cmake/OEToolchainConfig.cmake上有一个CMake工具链文件。那很有帮助。我想要做的是使用该工具链交叉编译依赖LCM的CMake / C ++项目(它执行find_package(LCM))。不幸的是,从Yocto的Rocko版本开始,似乎eSDK sysroots没有所有的配方安装文件(请参见thisthis)。这意味着每个配方都使用自己的sysroot构建。这意味着devtool build lcm会生成特定于配方的sysroot,而不是填充var-som-mx6文件所指向的现有OEToolchainConfig.cmake sysroot(我想将其视为CMake交叉编译sysroot)。因此,find_package(LCM)找不到root,因为var-som-mx6 sysroot没有它。

var-som-mx6 sysroot已经安装了成千上万的其他实用程序,例如NodeJS,udev等。如何使LCM也安装到那里,而不是安装到其自己的配方专用sysroot中?

0 个答案:

没有答案