我对rpmbuild中的一些目录感到困惑.
1:buildroot:应该用于存储最终用户安装二进制包时应该安装的文件.
问题:如何控制这个目录?BuildRoot是什么意思?
$ cat 3.spec
..
BuildRoot: /opt/abc
..
%prep
echo %{buildroot}
echo $RPM_BUILD_ROOT
Run Code Online (Sandbox Code Playgroud)
无论我将BuildRoot设置为什么,我都会得到定义的结果/usr/lib/rpm/macros.如果我定义%buildroot的~/.rpmmacros,我会从它那里得到的结果.
2:安装rpm包时如何控制目标?例如:rpm -ivh xxx.rpm,将安装文件的位置?
我试图向使用Qt和Boost的Buildroot添加一个包.该软件包使用qmake生成一个Makefile,这部分似乎正在工作,但是当我构建说:
Could not find qmake configuration file qws/linux-arm-g++.
Error processing project file: MsgDisplay.pro
Run Code Online (Sandbox Code Playgroud)
我的包的内容如下:
DummyPgm
??? main.cpp
??? MsgDisplay.pri
??? MsgDisplay.pro
??? MsgDisplay.pro.user
??? MsgHandler.cpp
??? MsgHandler.h
??? MsgServer.cpp
??? MsgServer.h
??? Tcp
? ??? TcpAddrPort.cpp
? ??? TcpAddrPort.h
? ??? TcpServer.cpp
? ??? TcpServer.h
? ??? TcpSocket.cpp
? ??? TcpSocket.h
??? Tools
??? Banner.cpp
??? Banner.h
??? IoExt.h
??? SeparateArgumentList.cpp
??? SeparateArgumentList.h
??? SysTypes.h
2 directories, 20 files
Run Code Online (Sandbox Code Playgroud)
我添加了一个包目录dummypgm,其中包含Config.in和dummypgm.mk文件.文件的内容是:
Config.in:
config BR2_PACKAGE_DUMMYPGM
bool …Run Code Online (Sandbox Code Playgroud) 我的 VirtualMachine 上的 buildroot 中的网络有问题。当我输入 ifconfig 我得到答案:
eth0:获取接口信息时出错:找不到设备
在控制台上加载 buildroot 时,我看到:
ip: 找不到设备 eth0
ip: SI0CGIFFALGS : 没有这样的设备
我找不到解决这个问题的方法。
我需要在Buildroot编译之后和在创建 rootfs 之前找到一种方法来修改/编辑给定文件,具体取决于menuconfig标志选择。我可以在Buildroot文档中找到可以通过使用构建后脚本来做到这一点。
我的问题是,只有在menuconfig 中选择了某些内容时,我才会执行脚本操作,例如:
(x) Enable my_login_system;
Run Code Online (Sandbox Code Playgroud)
如果我选择my_login_system,那么我需要根据以下内容更改nsswitch.conf文件:
passwd: my_login files
Run Code Online (Sandbox Code Playgroud)
如果我没有在 menuconfig 中选择“my_login_system”,那么 nsswitch.conf 应该是:
passwd: files my_login
Run Code Online (Sandbox Code Playgroud)
所以,我的主要问题是如何知道在构建后脚本中是否选择了“my_login_system”。
我正在使用buildroot,我正在尝试交叉编译此处的AWS IOT cmake库:https: //github.com/aws/aws-iot-device-sdk-cpp
我从这里为不同的AWS sdk提供了另一个buildroot makefile(正确编译):https: //github.com/aws/aws-sdk-cpp
我复制了其他makefile并尝试修改它以构建但我收到以下错误:
...
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:9 (message):
In-source builds not allowed. Please make a new directory (called a build
directory) and run CMake from there. You may need to remove CMakeCache.txt
and CMakeFiles folder.
...
Run Code Online (Sandbox Code Playgroud)
Makefile文件:
################################################################################
# aws-iot-device-sdk-cpp
################################################################################
AWS_IOT_DEVICE_SDK_CPP_VERSION = …Run Code Online (Sandbox Code Playgroud) 我在Buildroot(2017.02版)中打补丁,但是当我覆盖包中的包源时local.mk:
PACKAGENAME_OVERRIDE_SRCDIR = /...path_to_local_checkout
Run Code Online (Sandbox Code Playgroud)
我看到Buildroot修补程序未应用于此软件包。
仅当未在local.mk中覆盖该程序包时,才应用它们。
这是预期的行为吗?
笔记:
board/company_name/common/patches/...我正在使用buildroot来构建Linux固件。我如何只进行一次干净的重建linux内核(而不必花费一个小时来构建整个程序)?
我试过了 -
make linux-rebuild
Run Code Online (Sandbox Code Playgroud)
但这并不干净。
我也尝试过
make linux-reconfigure && make linux-rebuild
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。
是否可以在 buildroot 的外部树(由 BR2_EXTERNAL 变量指定的树)中拥有一个主机包?我知道我可以实现这样的包,如果存在任何依赖它的包,它将被构建。但是如果没有板包依赖它呢?例如,当我们需要为支持的电路板构建模拟器时可能就是这种情况。换句话说,我需要外部目录中的 Config.in.host 之类的东西。
我已经成功地使用 buildroot (v. 2019.05) 来构建 u-boot 和 Kernel,并且能够一起启动它。
问题是,即使我选择内核压缩模式为gzip,我得到的只是未压缩的Image文件。
在输出目录(以及 Linux)中只有Image文件,而应该有Image.gz.
如何Image.gz从 / 而不是生成Image?
Buildroot 中有 apt-get install Analog 命令吗?我想安装一些应用程序,但如何安装?