• 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
  • 相关阅读:
    利用MS11_003 IE漏洞攻击win7主机
    NNDL 作业11:优化算法比较
    【高保真原型制作】上海道宁为您带来适用于所有数字产品的简单的​交互式原型制作工具——ProtoPie
    1224. 最大相等频率(数组)
    Linux--inode
    优秀的图文识别开源项目PandaOCR
    云计算四层介绍
    什么是网络攻击?
    2023-11-7 OpenAI 45 分钟发布会:演示关于 GPT Store 构建 GPT、零代码创建 AI Agent
    Java 锁(synchronized)升级过程
  • 原文地址:https://blog.csdn.net/qq_42952079/article/details/126364409