RP-PX30平台 编译脚本

2024-04-03 23:32
文章标签 编译 平台 脚本 rp px30

本文主要是介绍RP-PX30平台 编译脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RP-PX30平台编译和原始的原厂编译还是有点不一样的,贴上make.sh

#!/bin/bash

MAKE_THEARD=`cat /proc/cpuinfo | grep "processor" | wc -l`  #获得主机CPU线程数量
MAKE_TOTAL=`cat /proc/meminfo | grep "MemTotal"  |  tr -cd "[0-9]"` #获得内存大小 按KB 算
MAKE_MEM=` expr $MAKE_TOTAL / 1048576` #内存字节数除以1048576 获得多少个G 的内存
#echo $MAKE_MEM


jvm_set_mem()# jvm 设置内存函数  设置 JACK_SERVER_VM_ARGUMENTS 并给出警告,小于8G内存不能编译
{
        if [ $MAKE_MEM -gt 32 ] #如果内存大于32G 
                then
                {
                        export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx32768m"
                }
        elif [ $MAKE_MEM -gt 16 ]
                then
                {
                        export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx16384m"
                }
        elif [ $MAKE_MEM -gt 8 ]
                then
                {
                        export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx8192m"
                }
        elif [ $MAKE_MEM -ge 6 ]
                then
                {
                        export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
                }
        else
                echo "/***************************************************/" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "memory less than 7GB, can not compile" 
                echo "/***************************************************/" 
                exit 1
        fi
#./prebuilts/sdk/tools/jack-admin start-server
}

path_set()# 设置JDK路径 的 函数 source 一下编译环境envsetup.sh lunch 为 rk3326_evb-userdebug
{
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
#    export JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

    source build/envsetup.sh
    lunch rk3326_evb-userdebug
}

if [ $1 == "clean" ]#如果第一个参数是 clean, 比如make.sh clean
    then
    {
        if [ $2 == "u-boot"  -o $2 == "u-boot/" -o $2 == "uboot" ]#怕你多打少打,让你兼容一下
            then
            {
                echo make clean u-boot
                pushd u-boot/
                make distclean
                popd
                pushd linux_update/rockdev/
                rm MiniLoaderAll.bin
                popd
                pushd linux_update/rockdev/Image/
                rm trust.img uboot.img
                popd
        }
        elif [ $2 == "kernel" -o $2 == "kernel/" ]#怕你多打少打,让你兼容一下
            then
            {
                    echo make clean kernel
                pushd kernel/
                make clean
                popd
                pushd linux_update/rockdev/Image/
                rm kernel.img resource.img
                popd
        }
        elif [ $2 == "android" -o $2 == "android/" ]#怕你多打少打,让你兼容一下
            then
            {
                    echo make clean android
                path_set
                make clean
                pushd linux_update/rockdev/Image/
                rm misc.img boot.img recovery.img system.img
                popd    
                rm out -rf
            }
        else#如果你执行./make.sh clean 那全干掉
            {
                    echo make clean u-boot
                pushd u-boot/
                make distclean
                popd
                    echo make clean kernel
                pushd kernel/
                make clean
                popd
                    echo make clean android
                path_set
                make clean
                rm out -rf
                pushd rockdev/Image-rk3326_evb/
                rm *.img
                popd
                popd linux_update/rockdev/
                rm MiniLoaderAll.bin update.img
                popd
                pushd linux_update/rockdev/Image/
                rm kernel.img resource.img misc.img boot.img recovery.img system.img update.img trust.img uboot.img
                popd
                echo clean Img oK
            }
        fi
    }
elif [ $1 == "u-boot" -o $1 == "u-boot/"  -o $1 == "uboot" ]#如果是执行uboot编译
    then
    {
        pushd u-boot/
        make mrproper #清配置,清编译文件
        ./make.sh evb-px30 -j8 #编译, 这里怎么把线程加进去了,这如果是4线程的CPU呢
        if [ $? -eq 0 ]; then #如果编译没报错
            echo "Build uboot ok!"
        else
            echo "Build uboot failed!"
            exit 1
        fi
        popd
    }
elif [ $1 == "kernel" -o $1 == "kernel/" ] #如果是执行内核编译
    then
    {
        pushd kernel/

        if [ ! -e .config ]; then #如果没有配置文件,加载默认配置文件
            make ARCH=arm64 rpdzkj_px30_defconfig 
        fi

        make ARCH=arm64 rp-px30.img -j$MAKE_THEARD #多线程编译
        #make ARCH=arm64 px30-evb-ddr3-v10.img -j8
        if [ $? -eq 0 ]; then  #如果编译没报错
            echo "Build kernel ok!"
        else
            echo "Build kernel failed!"
            exit 1
        fi
        popd
        cp kernel/resource.img rockdev/Image-rk3326_evb/
        cp kernel/kernel.img rockdev/Image-rk3326_evb/
        #path_set
        #./mkimage.sh
    }
elif [ $1 == "android" -o $1 == "android/" ] #如果编译安卓
    then
    {
        jvm_set_mem #配置java 参数
        path_set #配置java路径
        make -j $MAKE_THEARD  #多线程编译
        if [ $? -eq 0 ]; then #如果编译没有报错 
            echo "Build android ok!"
        else
            echo "Build android failed!"
            exit 1
        fi
        cp kernel/drivers/net/wireless/rockchip_wlan/rtl8723bu/wlan.ko out/target/product/rk3326_evb/vendor/lib/modules/wifi/8723bu.ko
        ./mkimage.sh 
    }
elif [ $1 == "ota" ] #如果编译OTA
    then
    {
        path_set
        ./mkimage.sh ota
    }
else #如果只执行 ./make.sh 那么全部编译到底
    {
        pushd u-boot/
        make mrproper
        ./make.sh evb-px30 -j8
        if [ $? -eq 0 ]; then
            echo "Build uboot ok!"
        else
            echo "Build uboot failed!"
            exit 1
        fi
        popd
        
        pushd kernel/
        if [ ! -e .config ]; then
            make ARCH=arm64 rpdzkj_px30_defconfig 
        fi
        make ARCH=arm64 rp-px30.img -j $MAKE_THEARD
        #make ARCH=arm64 px30-evb-ddr3-v10.img -j8
        if [ $? -eq 0 ]; then
            echo "Build kernel ok!"
        else
            echo "Build kernel failed!"
            exit 1
        fi
        popd
        jvm_set_mem
        path_set
        make -j $MAKE_THEARD  
        if [ $? -eq 0 ]; then
            echo "Build android ok!"
        else
            echo "Build android failed!"
            exit 1
        fi
        cp kernel/drivers/net/wireless/rockchip_wlan/rtl8723bu/wlan.ko out/target/product/rk3326_evb/vendor/lib/modules/wifi/8723bu.ko
        ./mkimage.sh 
        . rpupdate.sh #生成update.img
    }
fi

 

 

 

 

 

这篇关于RP-PX30平台 编译脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/874259

相关文章

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片