本文用来记录一个linux作业练习,题目是《基于ARM Linux的文件传输工具》,要求要用到以下知识点:
1、CMake工程构建技术
2、多线程技术
3、文件读写技术
4、交叉编译
本文记录了完整的实现过程,并附上最终的源码。
该程序的功能包括:
- 单线程文件复制
- 多线程文件复制(加速大文件传输)
- 目录浏览
- 文件信息查看
博主的环境:
基于x86架构的linux Ubuntu20.04系统。
重点写明了如何在x86的Ubuntu20.04上测试和交叉编译ARM版本的程序。
文章目录
- 一、编写代码
- 1.1 代码结构设计
- 1.2 各部分代码
- 二、先编译x86版本并测试代码功能
- 2.1 编译x86版本的程序
- 2.2 测试x86版本的程序
- 二、交叉编译ARM版本并测试ARM版本代码
- 2.1 在x86 ubuntu上搭建arm编译环境
- 2.1.1 安装ARM交叉编译工具链
- 2.1.2 交叉编译ARM版本
- 2.1.2.1 编译动态库可执行文件(文件小,依赖系统动态库)
- 2.1.2.2 编译静态库可执行文件(文件大,但不依赖系统动态库)
- 2.2 测试ARM版本代码
- 2.3 在真实ARM环境运行
- 2.4 完整源码下载
一、编写代码
1.1 代码结构设计
整体代码的结构如下所示:
multi_thread_file_transfer/ ├── CMakeLists.txt # CMake构建文件 ├── build_arm.sh # arm构建脚本 ├── README.md # 项目说明 ├── include/ # 头文件目录 │ └── file_transfer.h ├── src/ # 源代码目录 │ ├── main.c │ ├── file_operations.c # 文件读写功能 │ └── thread_manager.c # 多线程功能 └── tests/ # 测试文件 └── test_file.txt1.2 各部分代码
编写CMakeLists.txt:
# CMakeLists.txtcmake_minimum_required(VERSION3.10