• RK3568-buildroot添加用户应用程序


    RK3568-buildroot添加用户应用程序(以alsa_capture为例)

    1 在/buildroot/external/alsa_capture/src/目录下

    编写alsa_capture.c文件

    #include 
    #include 
    
    int main(int argc, char *argv[])
    {
    	printf("hello world\r\n");
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    编写Makefile文件

    Target = alsa_capture
    CPP = aarch64-linux-gcc
    LIBS =
    all: $(Target)
    $(Target):alsa_capture.c
    	$(CPP) alsa_capture.c -o $(Target) $(LIBS) 
    	@echo "generate $(Target) success!!!"
    	
    .PHONY:clean cleanall
    clean: 
    	@rm -f $(Target)
    cleanall:clean
    	@echo -e '\e[1;33m -rm -f $(INSTATLL_PATH)/$(Target) \e[0m'
    distclean:cleanall 
    install:
    	@echo -e '\e[1;33m  install -m 0755 $(Target) $(INSTATLL_PATH)/$(Target) \e[0m'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    2 在/buildroot/package/rockchip/alsa_capture/目录下

    编写Config.in文件

    config BR2_PACKAGE_ALSA_CAPTURE
    	bool "Simple ALSA Capture Demo"
    
    • 1
    • 2

    编写alsa_capture.mk文件

    #############################################################
    #
    # alsa_capture
    #
    #############################################################
    ALSA_CAPTURE_VERSION = 1.0
    //源码的版本号:1.0
    
    ALSA_CAPTURE_SITE = $(TOPDIR)/external/alsa_capture/src
    //源码下载地址:源码路径
    
    ALSA_CAPTURE_SITE_METHOD = local
    //源码下载方式:本地
    
    #ALSA_CAPTURE_LICENSE = Apache V2.0
    #ALSA_CAPTURE_LICENSE_FILES = NOTICE
    
    define ALSA_CAPTURE_BUILD_CMDS
    	cd $(@D);$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
    endef
    //在buildroot框架编译的时候执行,用于给源码的Makefile传递编译选项和链接选项,调用源码Makefile。
    
    define ALSA_CAPTURE_INSTALL_TARGET_CMDS
    	find $(@D) -name "alsa_capture" -type f -executable -print -exec cp -vf {} $(TARGET_DIR)/usr/bin/ \;
    endef
    //buildroot编译完成后执行,将编译出来的bin或lib文件拷贝到指定目录。
    
    $(eval $(generic-package))
    //把整个.mk构建脚本,通过Buildroot框架的方式,展开到Buildroot/目录下的Makfile中,生成的构建目标。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    3 在/buildroot/package/rockchip/Config.in文件下

    添加source "package/rockchip/alsa_capture/Config.in"
    
    • 1

    4 在/buildroot/configs/OK3568_defconfig文件下

    添加BR2_PACKAGE_ALSA_CAPTURE=y
    
    • 1

    5 在/buildroot/output/OK3568/build/alsa_capture-1.0文件夹下查看是否生成可执行文件

    alsa_capture.c:源文件
    Makefile:源文件
    alsa_capture-1.0.tar:可执行文件压缩包
    alsa_capture:可执行文件
    
    • 1
    • 2
    • 3
    • 4

    6 在/buildroot/output/OK3568/target/usr/bin文件夹下查看拷贝的可执行文件

    alsa_capture.mk文件指定了可执行程序安装路径到/usr/bin目录下。
    
    • 1
  • 相关阅读:
    (二)、构造函数和原型
    Java File类简介说明
    Qt5.9.8在linux银河麒麟下关闭系统带的最大化最小化和关闭按键
    redisson支持高并发的RBucket
    通信算法之七十七:无人机设备上的通信系统
    多角度解读新兴公链Sui:团队、架构、代币、生态等
    Mysql8与mariadb的安装与常用设置
    React Fiber架构原理剖析
    C++11新特性 auto
    【海浪建模3】三维随机真实海浪建模以及海浪发电机建模matlab仿真
  • 原文地址:https://blog.csdn.net/qq_42952079/article/details/126364409