我使用以下命令与我的Ubuntu 10.04主机上的Linaro工具链交叉编译Valgrind(http://valgrind.org/downloads/valgrind-3.8.1.tar.bz2)(我正在使用Buildroot):
export PATH=$PATH:/home/user/toolchain/linaro/bin
CC=arm-linux-gnueabi-gcc CFLAGS=-I/home/user/toolchain/linaro/arm-linux-gnueabi/libc/usr/include LDFLAGS=-L/home/user/toolchain/linaro/arm-linux-gnueabi/libc/usr/lib ./configure --prefix=/opt/valgrind --host=armv7-none-linux-gnueabi --target=arm-none-linux-gnueabi --build=i386-ubuntu-linux
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
当我将二进制文件复制到我的ARM目标板时,我收到以下错误:
==413== Memcheck, a memory error detector
==413== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==413== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==413== Command: /home/user/testApp
==413==
valgrind: Fatal error at startup: a function redirection
valgrind: which is mandatory for this platform-tool combination
valgrind: cannot be set up. Details of the redirection are:
valgrind:
valgrind: A must-be-redirected …Run Code Online (Sandbox Code Playgroud) 我正在使用buildroot来创建在我的ARM平台上运行的rootfs.
我希望在我的平台上有一个包管理器来轻松安装包,比如ubuntu中的apt-get.
我找到了opkg,可以简单地添加到buildroot构建中,但我找不到有关如何查找存储库的任何信息.
另外,在网上阅读一些关于此的内容,我还读到buildroot没有包管理器.opkg不是包经理吗?或者只是某种前端来获取包裹?
我真的不明白包管理器是由什么组成的,我没有找到任何关于这个的信息.
有人可以解释实现这种经理真正需要什么,或者在哪里找到这样的信息?
我将设置构建环境,为AT91SAM9X25板制作自己的linux嵌入式系统.我正在使用buildroot来做到这一点.make命令构建所有目标,第一个构建工具链然后打包,然后rootfs和rootfs(tar,cpio ...)的图像.要重建rootfs,我通常使用make clean然后make.make clean命令删除所有包括工具链.
所以我的第一个问题是:有没有办法在不构建工具链的情况下重制rootfs?这需要很多时间.
我也在buildroot中构建linux内核.我在buildroot中打开了BR2_LINUX_KERNEL [= y].linux配置为使用初始RAM文件系统,因此要构建内核,需要rootfs的映像(应该由buildroot创建).当我在buildroot的root下运行make时,构建失败并出现错误无法打开'buildroot-2013.05/output/images/rootfs.cpio'.因为(如果我理解正确的话)构建序列是工具链--pakages - rootfs - linux内核 - rootfs的图像.当它尝试构建linux内核时,不会创建rootfs.cpio映像.
所以第二个问题是:如果我想使用初始RAM文件系统,如何在buildroot中构建linux?
可能是比buildroot更有效的替代品?
提前致谢.
我使用buildroot交叉编译VLC(版本2.1.2)媒体播放器用于扶手板.我已经使用串行电缆将电路板连接到我的linux PC.当我尝试在minicom中使用"vlc"命令运行播放器时,该命令位于我的根文件系统的/ usr/bin中.我收到以下错误:
禁止接口错误:无法连接到D-Bus会话守护程序:/ usr/bin/dbus-launch异常终止,出现以下错误:自动启动错误:X11初始化失败.
任何人都可以澄清这个错误的含义,也可以告诉我什么是dbus以及为什么我的VLC播放器需要它.
谢谢你的帮助.
我使用buildroot进行自定义分发,使用ARMv7处理器的硬流程.一切正常,除了....
# arecord -D hw:0,0 -fdat -d 5 test.wav
Run Code Online (Sandbox Code Playgroud)
这会产生多个文件.成千上万的人.
-rw-r--r-- 1 root root 958508 Jan 1 00:19 test-01.wav
-rw-r--r-- 1 root root 44 Jan 1 00:19 test-02.wav
-rw-r--r-- 1 root root 44 Jan 1 00:19 test-03.wav
-rw-r--r-- 1 root root 44 Jan 1 00:19 test-04.wav
-rw-r--r-- 1 root root 44 Jan 1 00:19 test-05.wav
-rw-r--r-- 1 root root 44 Jan 1 00:19 test-06.wav
-rw-r--r-- 1 root root 44 Jan 1 00:19 test-07.wav
-rw-r--r-- 1 root root 44 Jan 1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在嵌入式环境 (buildroot) 中的 raspaberry pi 3 上运行 javafx 示例,我想在没有 X. 的情况下运行它,当我运行以下命令时:
/root/jre-13.0.1/bin/java -Dfile.encoding=UTF-8 --add-modules javafx.controls,javafx.fxml -Dprism.verbose=true -Djavafx.verbose=true -Dglass.platform=Monocle -Dprism.order=es2 -Djava.library.path=/root/jre-13.0.1/lib/ -Dembedded=monocle -jar /home/root/NetBeansProjects//JavaFXFXML/dist/JavaFXFXML.jar
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
cmd : cd '/home/root/NetBeansProjects//JavaFXFXML'; '/root/jre-13.0.1//bin/java' -Dfile.encoding=UTF-8 --add-modules javafx.controls,javafx.fxml -Dprism.verbose=true -Djavafx.verbose=true -Dglass.platform=Monocle -Dprism.order=es2 -Djava.library.path=/root/jre-13.0.1/lib/ -Dembedded=monocle -jar /home/root/NetBeansProjects//JavaFXFXML/dist/JavaFXFXML.jar
JavaFX launchApplication method: launchMode=LM_JAR
Prism pipeline init order:
es2
Using Double Precision Marlin Rasterizer
Using dirty region optimizations
Using system sized mask for primitives
Not
f
orcing power of 2 sizes for textures
Using hardware CLAMP_TO_ZERO mode
Opting in for …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 buildroot(busybox) 为 RISCV Arch 编译 linux。我之前使用的是 18.04 和 20.04,编译没有任何问题。现在,我已将其升级到 21.10 以构建其他一些东西。我已经移动了我的工具链,我可以使用which命令找到它。当我尝试编译 Linux 时,出现了一些在早期版本中没有遇到过的错误。
>>> host-m4 1.4.18 Building
In file included from /usr/include/signal.h:328,
from ./signal.h:52,
from c-stack.c:49:
c-stack.c:55:26: error: missing binary operator before token "("
55 | #elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
| ^~~~~~~~
CC closein.o
c-stack.c:134:8: error: variably modified 'buffer' at file scope
134 | char buffer[SIGSTKSZ];
| ^~~~~~
CC closeout.o
Run Code Online (Sandbox Code Playgroud)
我对不同版本如何导致此错误感到困惑。
提前致谢。
我继承的一个项目使用了一个非常旧版本的 buildroot,但我想将其更改为使用仅在以后的 buildroot 版本中添加的功能。
是否有一种直接的方法可以更新 buildroot 设置以使用更高版本?
例如,如果我保存一个 defconfig 文件并在以后的 buildroot 版本中导入它,这是否可行,或者是否有实际原因为什么不可行?是否有我需要携带的其他配置文件(例如内核、busybox 等)?谢谢!
我遇到过一个我见过的最奇怪的问题.我正在为Linux上的Linux CPU交叉编译应用程序.我正在使用buildroot,一切顺利,直到我试图在目标上运行应用程序:我得到了-sh: ./hw: not found.例如:
$ cat /tmp/test.cpp
#include <cstdio>
#include <vector>
int main(int argc, char** argv){
printf("Hello Kitty!\n");
return 0;
}
$ ./arm-linux-g++ -march=armv7-a /tmp/test.cpp -o /tftpboot/hw
Run Code Online (Sandbox Code Playgroud)
将可执行文件加载到目标; 然后发布目标:
# ./hw
-sh: ./hw: Permission denied
# chmod +x ./hw
# ./hw
-sh: ./hw: not found
# ls -l ./hw
-rwxr-xr-x 1 root root 6103 Jan 1 03:40 ./hw
Run Code Online (Sandbox Code Playgroud)
还有更多:在使用发行版编译器构建时arm-linux-gnueabi-g++ -march=armv7-a /tmp/test.cpp -o /tftpboot/hw,应用运行正常!
我比较了可执行文件readelf -a -W /tftpboot/hw,但没有发现太多的差异.我在这里粘贴了两个输出.我注意到的唯一一件事就是线Version5 EABI, …
我制作了 dts 的副本,<linux>/board/arch/arm/boot/dts/imx28-evk.dts以便与我的自定义板一起使用。我的自定义设备树已命名并在 Buildroot 配置中的树外自定义 DTS菜单条目 ( )imx28-custom.dts中指向。BR2_LINUX_KERNEL_CUSTOM_DTS_PATH
然而,u-boot 配置为使用现有的 MX28 板配置。构建内核后,我在文件夹中有imx28-custom.dtb和。zImage<buildroot>/output/images
当系统启动时,u-boot 告诉imx28-evk.dtb没有找到。为什么imx28-custom.dtb构建了但u-boot找不到?为什么 u-boot 找不到自己的设备树 ( imx28-evk.dtb) 和我为内核定制的设备树?我认为这只BR2_LINUX_KERNEL_CUSTOM_DTS_PATH与内核有关。imx28-evk.dtb如果 u-boot 尝试使用自己的设备树来实现此目的,如何将我的自定义设备树传递到内核?