2022-12-21 Buildroot创建自己的软件包,把一个c应用编译到系统里面去运行

一、Buildroot 编译完成后,会在 /buildroot/output/xxxx/host/ 目录下,生成交叉编译工具,我们可以用来编译目标程序。

1、比如我现在要编译下面的c文件

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{        
   printf("Hello word! fuck you buildroot\n");
}

2、设置编译器地址变量

export PATH=/home/xxx/workspace/source/px30-linux/buildroot/output/rockchip_px30_64/host/bin:$PATH

3、编译

aarch64-buildroot-linux-gnu-gcc rkwifibt_test.c -o hello 

 4、把hello这个可执行程序放到ARM运行结果如下:

二、如何创建自定义软件包,把上面c程序放到整个buildroot里面进行编译呢?

1、创建工程目录buildroot/package/rockchip/rkwifibt_test,新建 Config.in和rkwifibt_test.mk

Config.in

config BR2_PACKAGE_RKWIFIBT_TEST
	bool "rkwifibt_test"

rkwifibt_test.mk

#############################################################
#
# RKWIFIBT_TEST
#
#############################################################
ifeq ($(BR2_PACKAGE_RKWIFIBT_TEST), y)
RKWIFIBT_TEST_VERSION:=1.0.0
RKWIFIBT_TEST_SITE=$(TOPDIR)/../external/rkwifibt_test
RKWIFIBT_TEST_SITE_METHOD=local

define RKWIFIBT_TEST_BUILD_CMDS
    $(TARGET_CC) -o $(@D)/src/rkwifibt_test_demo $(@D)/src/rkwifibt_test.c
endef

define RKWIFIBT_TEST_CONFIGURE_CMDS
	#cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake
endef



define RKWIFIBT_TEST_INSTALL_TARGET_CMDS
    $(INSTALL) -D -m 0777 $(@D)/src/rkwifibt_test_demo  $(TARGET_DIR)/usr/bin/
endef


$(eval $(generic-package))
endif

2、修改上一级 Config.in,buildroot/package/rockchip/Config.in 末行添加

source "package/rockchip/rkwifibt_test/Config.in"

 3、创建源码目录,上文的 rkwifibt_test.mk文件里已经指定了源码目录 external/rkwifibt_test。心新建external/rkwifibt_test/src/rkwifibt_test.c,内容如下

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
        printf("Hello word! fuck you buildroot\n");
        return 0;
}

 

 4、配置软件包,打开配置菜单 make menuconfig,勾选rkwifibt_test配置

 5、编译,make rkwifibt_test-rebuild会把编译出来的文件复制到target/usr/bin/rkwifibt_test_demo,而make rkwifibt_test-build 不会,这就是build和rebuild的区别。

make rkwifibt_test-dirclean  //清除之前的编译

make rkwifibt_test-build     //编译

make rkwifibt_test-rebuild   //重新编译

  6、把整个output目录删掉,全部编译系统后,也会在usr/bin/下面生成可执行文件。

  7、整个过程需要添加Config.in 、 rkwifibt_test.mk、rkwifibt_test.c三个文件,然后修改defconfig和config.in

三、参考文章

Buildroot 开发 — Firefly Wiki

嵌入式Linux构建框架Buildroot创建自己的软件包(基于传统makefile和cmake)(篇二) - 知乎

猜你喜欢

转载自blog.csdn.net/qq_37858386/article/details/128396504
今日推荐