2021-3

一、网址参考

  1、在线进制转换-IEE754浮点数16进制转换

  2、repo工具的使用详解

  3、浅析 Linux的国际化与地方化机制

  4、Makefile调用shell应该注意的地方(摩斯电码)

二、实践

  1、在Makefile中用shell命令自动生成版本号:

方法1:

rtu.version文件内容:
R7V1.2.0
version:
    @echo "#ifndef __VERSION_H_" > $(SCCU_DIR)/include/version.h
    @echo "#define __VERSION_H_" >> $(SCCU_DIR)/include/version.h
    @BUILD_TIME=`LC_TIME=en date +%y%m%d`; \
    VERSION=`cat rtu.version`; \
    NOW_VERSION="$${VERSION}-$${BUILD_TIME}"; \
    echo "NOW_VERSION=$${NOW_VERSION}"; \
    echo "#define SCCU_VERSION \"$${NOW_VERSION}\"" >> $(SCCU_DIR)/include/version.h; \
    echo "#endif" >> $(SCCU_DIR)/include/version.h 

 方法2:

rtu.version 文件内容:
RTU_TYPE=7
VERSION_MAJOR=1
VERSION_MINOR=2
VERSION_REVISION=0
version:
    @echo "#ifndef __VERSION_H_" > $(SCCU_DIR)/include/version.h
    @echo "#define __VERSION_H_" >> $(SCCU_DIR)/include/version.h
    @BUILD_TIME=`LC_TIME=en date +%y%m%d`; \
    RTU_TYPE=`awk -F= '{if(/^RTU_TYPE/)print $$2}' rtu.version`; \
    MAJOR_VER=`awk -F= '{if(/^VERSION_MAJOR/)print $$2}' rtu.version`; \
    MINOR_VER=`awk -F= '{if(/^VERSION_MINOR/)print $$2}' rtu.version`; \
    REV_VER=`awk -F= '{if(/^VERSION_REVISION/)print $$2}' rtu.version`; \
    FULL_VER=R$${RTU_TYPE}V$${MAJOR_VER}.$${MINOR_VER}.$${REV_VER}-$${BUILD_TIME}; \
    echo "VERSION = $${FULL_VER}"; \
    echo "#define SCCU_VERSION \"$${FULL_VER}\"" >> $(SCCU_DIR)/include/version.h; \
    echo "#endif" >> $(SCCU_DIR)/include/version.h 

注意脚本语句中的$$、;和 \(前面有个空格)的用意:

  1)shell中的变量前面都需要加$$

       2)在Makefile中执行shell命令,一行创建一个进程来执行。这也是为什么很多Makefile中有很多行的末尾都是“;  \”,以此来保证代码是一行而不是多行,这样Makefile可以在一个进程中执行

    3)在Makefile中只能在target中调用Shell脚本,其他地方是不能输出的; 如 

VAR="Hello"
echo "$VAR"

all:
   .....

  以上代码任何时候都不会输出,没有在target内,如果上述代码改为如下:

VAR="Hello"

all:
    echo "$VAR"
    .....

以上代码,在make all的时候将会执行echo命令。

    2. 查看设备IP地址 

  当ifconfig不能用时,可以使用如下命令:  

    ip addr show (ifconfig不能用时)
    ip address show

posted @ 2021-03-05 10:28  shanyu20  阅读(58)  评论(0编辑  收藏  举报