我最近一直在尝试BitBake,我很想知道它是如何工作的.
我可以编译我的组件如下:
bitbake component
Run Code Online (Sandbox Code Playgroud)
但我发现以下行做了同样的事情(我指定BitBake应该运行do_build任务):
bitbake component -c build
Run Code Online (Sandbox Code Playgroud)
即组件编译,工作,两者生成相同的日志文件.当我没有指定任务时,任务do_build是某种默认值吗?我只用这个组件尝试了这个,所以我很好奇它是否是通用的?
我有一个BitBake recipe(example_0.1.bb),do_install其中包含一个尝试安装.so文件的任务:
do_install() {
install -d ${D}${libdir}
install -m 0644 ${S}/example.so ${D}${libdir}
}
FILES_${PN} += "${libdir}/example.so"
Run Code Online (Sandbox Code Playgroud)
这在构建过程中失败并返回:
ERROR: example not found in the base feeds
Run Code Online (Sandbox Code Playgroud)
但是,如果我将测试文件添加到包中,则.so文件和测试文件都会添加到rootfs中.
do_install() {
install -d ${D}${libdir}
install -m 0644 ${S}/example.so ${D}${libdir}
echo "bar" >> ${TOPDIR}/foo
install -m 0644 ${TOPDIR}/foo ${D}${libdir}
}
FILES_${PN} += "${libdir}/libceill.so"
FILES_${PN} += "${libdir}/foo"
Run Code Online (Sandbox Code Playgroud)
如何只添加.so没有垃圾测试文件的文件?
我正在使用Yocto来创建包含apache2的构建,但我很难添加php支持.我以前运行它(读取:去年),但从那时起,meta-openembedded中的元网络服务器层发生了变化.从meta-webserver中的README文件:
"这一层用于提供内置mod_php的一个modphp配方,但这种情况正在建于元OE的PHP食谱的一部分.然而,由于Apache2的是需要建立mod_php,并且和Apache2的食谱是在这一层,食谱元-oe不能依赖它,mod_php,并且默认情况下不建.如果你希望使用mod_php的,你需要"的Apache2",以使将其添加到PACKAGECONFIG价值,为PHP的配方."
我在我自己的图层中添加了以下行到php:
PACKAGECONFIG_append ="apache2"
但是当编译mod_php时无法找到似乎是apache包含文件的内容时我得到编译错误(我在下面只包含一个错误,我也得到类似的ap_config.h错误):
在文件从/home/martin/Yocto/poky/rpi/tmp/work/x86_64-linux/php-native/5.6.12-r0/php-5.6.12/sapi/apache2handler/mod_php5.c:26:0包括:| /home/martin/Yocto/poky/rpi/tmp/work/x86_64-linux/php-native/5.6.12-r0/php-5.6.12/sapi/apache2handler/php_apache.h:24:19:致命错误: httpd.h:没有这样的文件或目录| 编译终止.
有没有人设法最近用php支持编译apache2,并且可以提供一些帮助,如何做到这一点?谢谢!
我已经按照教程在我的yocto图像中包含了一个C程序.它就像一个魅力,现在我在我的机器上运行helloworld脚本.
我想用c ++做同样的事情,因为我需要加载一个使用opencv的程序.
我尝试用cpp改变c,但尽管如此,它失败了.还有什么需要改变以使其工作?你能指点我那里的任何教程或例子吗?我用一个简单的例子找不到合适的.
我正在尝试在启动时启动服务,但是我在构建时遇到问题。\n这是我的自定义层中的树结构
\nmichael@michael-VirtualBox:~/Documents/simple_daemon/sources/meta-simpledaemon$ tree\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 conf\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 layer.conf\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 COPYING.MIT\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 recipes-example\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 example\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 example_0.1.bb\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 simpledaemon\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 files\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 simpledaemon.service\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 simpledaemon_git.bb\nRun Code Online (Sandbox Code Playgroud)\n在我的 local.conf 中,我在末尾添加了以下内容:
\nIMAGE_INSTALL_append = " bbexample "\nIMAGE_INSTALL_append = " simpledaemon "\nIMAGE_INSTALL_append = " packagegroup-core-ssh-openssh "\nIMAGE_INSTALL_append = " openssh-sftp-server "\n\n\nDISTRO_FEATURES_append = " systemd"\nVIRTUAL-RUNTIME_init_manager = " systemd"\nDISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"\nVIRTUAL-RUNTIME_initscripts = ""\nRun Code Online (Sandbox Code Playgroud)\n我的.bb文件如下:
# Recipe created by recipetool\n# This is the basis of a recipe and may need further editing in order …Run Code Online (Sandbox Code Playgroud) 我想在/home/root我的 bitbake 构建过程中创建一个文件夹。我尝试了两种不同的方法,但都失败了。
第一个给出了一个巨大的错误,我无法滚动到顶部
do_install_append () {
install -d ${D}/root/smg_logs
}
Run Code Online (Sandbox Code Playgroud)
第二个将构建并运行,但我没有看到创建的文件夹。
create_dirs() {
mkdir -p root/smg_logs
}
ROOTFS_POSTPROCESS_COMMAND += "create_dirs ; "
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用前一个和以下
create_dirs() {
install -d ${D}/home/root/smg_logs
mkdir -p /home/root/smg_logs
}
ROOTFS_POSTPROCESS_COMMAND += "create_dirs ; "
Run Code Online (Sandbox Code Playgroud)
这允许我的设备启动,但它似乎覆盖了一些重要的代码。
编辑:与下面答案中的链接类似,我尝试了以下操作。
do_install_append () {
install -d ${D}/root/smg_logs
}
FILES_${PN} += "/root/smg_logs"
Run Code Online (Sandbox Code Playgroud) 我们使用以下命令生成 Yocto SDK:bitbake -c populate_sdk <image-name>
约克托分行:邓菲尔
我们没有看到 SDK 中包含头文件,例如,我们有 libmodbus 的一部分IMAGE_INSTALL,但我们在 SDK 中没有看到该modbus.h文件(存在于 libmodbus-dev 包中)。