编写shell文件调用多个makefile文件(交叉编译)

发布于:2022-12-29 ⋅ 阅读:(289) ⋅ 点赞:(0)

实验题目:基于下列链接,编写shell脚本
---------------使用makefile生成动态库和静态库
实验要求:执行脚本的时候,带有不同的参数,编译生成可以在server和board上能够运行的脚本文件

实验环境与工具:Linux、ubuntu20、gcc7.4.0、secureCRT4.0、notepad++
执行命令:./builder.sh server 或者 ./builder.sh board

一、上文链接的 makefile 改写

所有makefile文件内的 CC :=gcc 这条语句进行改写。
在这里插入图片描述
改写后的内容为:

#compile and lib parameter
CC			:= ${TOOLCHAIN}
LIBS        :=
LDFLAGS     :=-L
DEFINES     :=

二、shell脚本

1.相关文件存储位置结构

在这里插入图片描述
part1文件存放前文链接内的相关文件
在这里插入图片描述

part2文件存放builder.sh文件
在这里插入图片描述

2.输入以下命令建立 .sh 文件

vim builder.sh

3.在该 .sh 文件中输入以下内容

注意:work_dir代表的是需要切换到当前某个路径下。
---------make TOOLCHAIN=“$1” 语句代表使用 “gcc” 还是 “arm-linux-gnueablihf-gcc” 执行makefile文件。

#!/bin/bash

cur_dir=$(pwd)
work_dir=${cur_dir/"part2"/"part1"}

func_build_liba()
{
	echo "building static lib";
	cd $work_dir/liba;
	make clean;
	make TOOLCHAIN="$1"
}

func_build_libso()
{
	echo "building share lib";
	cd $work_dir/liba;
	make clean;
	make TOOLCHAIN="$1"
}

func_build_main()
{
	echo "building share lib";
	cd $work_dir;
	make clean;
	make TOOLCHAIN="$1"
}
if [ "$1" = "server" ]
then
	func_build_liba "gcc"
	func_build_libso "gcc"
	func_build_main "gcc"
elif [ "$1" = "board" ]
then
	func_build_liba "arm-linux-gnueablihf-gcc"
	func_build_libso "arm-linux-gnueablihf-gcc"
	func_build_main "arm-linux-gnueablihf-gcc"	
else
	echo "Please input server or board as a parameter!"
	exit -1
fi
exit 0
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到