[英]Cross compiling and deploying Valgrind to an embedded linux device
我試圖在我的 Fedora VM 上交叉編譯 Valgrind,以便讓它在定制的嵌入式 Linux 設備上運行(運行 Yacto 和 Kinetis KL2x MCU w/ARM Cortex M4 CPU)。 我有一個正確配置的 QT IDE,可以交叉編譯 QT 項目並將其部署到設備。 我想知道交叉編譯非 QT 應用程序的最佳途徑是什么。 我嘗試使用現有項目(Valgrind 源代碼 @ http://valgrind.org/downloads/valgrind-3.12.0.tar.bz2 )制作一個新項目(在 QT>New Project>Import Project>Import Existing Project)和我不斷收到此錯誤:
17:20:46: Running steps for project valgrind...
17:20:46: Starting: "/usr/bin/make" all
make: *** No rule to make target `all'. Stop.
17:20:46: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project valgrind (kit: ----)
When executing step "Make"
17:20:46: Elapsed time: 00:00.
我不知道如何解決它。 是否可以僅使用交叉編譯器本身(arm-poky-linux-gnueabi-g++)來編譯 Valgrind? 我最好將 makefile 更改為使用交叉編譯器而不是 gcc,然后使用 scp 將文件發送到我的設備(如果是這樣,我使用許多不同的 makefile 中的哪一個?)? 或者有沒有更好的方法讓我失蹤? 該系統沒有任何包管理工具或它自己的編譯器。 任何幫助/輸入將不勝感激。
交叉編譯環境設置后構建配方時出錯:
[----@localhost valgrind]$ source /opt/poky/default/environment-setup-cortexa8hf-vfp-neon-poky-linux-gnueabi
[----@localhost valgrind]$ bitbake -c build valgrind_3.12.0.bb
Traceback (most recent call last):
File "/opt/poky/1.8.2/sysroots/i686-pokysdk-linux/usr/lib/python2.7/site.py", line 553, in <module>
main()
File "/opt/poky/1.8.2/sysroots/i686-pokysdk-linux/usr/lib/python2.7/site.py", line 535, in main
known_paths = addusersitepackages(known_paths)
File "/opt/poky/1.8.2/sysroots/i686-pokysdk-linux/usr/lib/python2.7/site.py", line 266, in addusersitepackages
user_site = getusersitepackages()
File "/opt/poky/1.8.2/sysroots/i686-pokysdk-linux/usr/lib/python2.7/site.py", line 241, in getusersitepackages
user_base = getuserbase() # this will also set USER_BASE
File "/opt/poky/1.8.2/sysroots/i686-pokysdk-linux/usr/lib/python2.7/site.py", line 230, in getuserbase
from sysconfig import get_config_var
File "/opt/poky/1.8.2/sysroots/i686-pokysdk-linux/usr/lib/python2.7/sysconfig.py", line 10, in <module>
'stdlib': '{base}/'+sys.lib+'/python{py_version_short}',
AttributeError: 'module' object has no attribute 'lib'
使用 Yocto 工具鏈交叉編譯valgrind
的示例是:
# setup workspace
mkdir workspace && cd workspace
# download Yocto sdk
wget http://gumstix-yocto.s3.amazonaws.com/sdk.sh
#Install it to workspace/sdk
./sdk.sh
source sdk/environment-setup-cortexa8hf-neon-poky-linux-gnueabi
# download valgrind tarball
wget http://valgrind.org/downloads/valgrind-3.12.0.tar.bz2
# extract source
tar jxf valgrind-3.12.0.tar.bz2 && cd valgrind-3.12.0
# this fix issue with unknown arm architecture (see http://stackoverflow.com/questions/29514706/cross-compiling-valgrind-for-arm)
sed -i -e "s#armv7#arm#g" configure
./configure --host=arm-poky-linux-gnueabi --prefix="$(pwd)/out"
make -j16
make install
到這里,安裝目錄out
,你也可以用--prefix="${SDKTARGETSYSROOT}/usr"
安裝到${SDKTARGETSYSROOT}/usr
檢查此鏈接以獲取使用 Yocto SDK 進行交叉編譯的基本示例
我認為最簡單的方法是在您的 yocto 構建環境中構建它(源 poky/oe_init_build_env)和構建 valgrind
bitbake -c build valgrind
然后在構建文件夾tmp/work/"plattform"/valgrind/"version"/image/
查找文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.