WARNING
📌此教程教大家在Ubuntu18.04.6的虚拟机中编译C和C++程序,将编译之后的文件传到泰山派(Ubuntu20.04)中运行。
虚拟机Ubuntu18.04版本信息:
lipeng@lipeng:~/share/TaiShanPai/test$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
2
3
4
5
6
7
8
9
10
11
12
13
一、虚拟机环境配置
- 在虚拟机中更新一下apt,输入以下命令
sudo apt update
- 安装交叉编译器和vim编辑器
vim是让我们写程序的时候使用的一个文本编辑软件
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu vim
安装完成之后可以输入以下命令验证gcc、g++和vim的安装是否成功。 gcc-aarch64-linux-gnu:
aarch64-linux-gnu-gcc --version
g++-aarch64-linux-gnu:
aarch64-linux-gnu-g++ --version
Vim:
vim --version
二、编写和编译程序
我们有两种交叉编译器
- gcc交叉编译器():编译C程序
- g++交叉编译器():编译C++程序
对于C程序,虽然aarch64-linux-gnu-g++
也能编译,但它会默认链接C++标准库,即使程序可能不需要这些库。这通常不会导致问题,但会使得最终的可执行文件比仅使用C标准库时更大。如果你的C程序确实不需要C++库,使用aarch64-linux-gnu-gcc
可能是更合适的选择,因为它默认只链接C标准库。
1、编写&编译C程序
- 我们在当前目录下创建一个.c文件,将在这个.c文件里面写c程序。
touch hello.c
- 使用Vim编辑器打开 hello.c 文件,在里面编写程序。
注意:进入vim编辑器界面之后不能直接进行编辑,需要按一下键盘上面的 i 键进入编辑模式,然后编写程序结束之后按下 ESC 键,之后按下键盘中的 Shift + : 键,这时vim编辑器的下方会出现一个 :的符号,我们直接输入 wq 然后按回车就保存并且退出了。
sudo vi hello.c
- 使用交叉编译器编译hello.c
sudo aarch64-linux-gnu-gcc hello.c
编译完成之后会在当前目录下生成一个a.out 的文件
接下来将 a.out 这个文件转移到泰山派开发板中!接下来看第三章泰山派运行程序
2、编写&编译C++程序
- 我们在当前目录下创建一个.cpp件件,将在这个.cPP文件里面写c++程序。
touch hello.cpp
- 使用Vim编辑器打开 hello.cpp 文件,在里面编写程序。
注意:进入vim编辑器界面之后不能直接进行编辑,需要按一下键盘上面的 i 键进入编辑模式,然后编写程序结束之后按下 ESC 键,之后按下键盘中的 Shift + : 键,这时vim编辑器的下方会出现一个 :的符号,我们直接输入 wq 然后按回车就保存并且退出了。
sudo vi hello.cpp
这样我们的程序就白那些完成了,运行出来会显示:hello world!!
- 使用交叉编译器编译hello.c
sudo aarch64-linux-gnu-g++ hello.c
编译完成之后会在当前目录下生成一个a.out 的文件
接下来将 a.out 这个文件转移到泰山派开发板中!接下来看第三章泰山派运行程序
三、泰山派运行程序
将a.out 文件copy到泰山派的目录中,然后运行程序。
sudo ./a.out
这样程序就在泰山派运行了!
注意事项
使用arm64的交叉编译器编译的程序只能运行在arm64架构的系统中。
我们使用交叉编译器编译出来的程序在虚拟机中不可运行(虚拟机的系统架构不是arm64):