- 编译和链接
一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是.obj文件,UNIX下是.o文件,即ObjectFile,这个动作叫做编译(compile)。然后再把大量的ObjectFile合成执行文件,这个动作叫作链接(link)。
总结一下,源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。
- 交叉编译
简单地说,就是在一个平台上通过交叉编译工具编译、链接生成可以再另一个平台上运行的可执行代码。
- 一、 安装交叉编译器
1.在Linux虚拟机中设置Linux Arm平台的交叉编译环境。
使用的编译器为:arm-linux-gnueabihf-gcc和arm-linux-gnueabihf-g++
注意:还有一类编译器为arm-linux-gnueabi-gcc和arm-linux-gnueabi-g++理论可用,但实际操作中发现,使用该编译器编译后的可执行文件在我们的板子上不能正常跑,原因暂不明。
(1) 安装交叉编译器
sudo apt-get install gcc-arm-linux-gnueabihf
sudo apt-get install g++-arm-linux-gnueabihf
(2) 设置交叉编译变量
vi ~/.bashrc
弹出如下界面:
按“↓”直到页面最底端,输入“i”后显示插入,然后回车换行准备输入:
export CROSS_COMPILE=arm-linux-gnueabihf-
如图:
然后,输入“:wq”保存并退出
可以输入
ls -alt /home/iris
可以在根目录下看一个“.swo”文件即为生成的文件。
(3) 检查交叉编译变量的设置是否生效
加载.bashrc文件
source ~/.bashrc
查看交叉编译变量设置结果
echo $CROSS_COMPILE
出现如图所示则表示设置成功
安装交叉编译器时,出现问题如下所示:
解决方法:
方法一:终端输入 ps aux ,列出进程。找到含有apt-get的进程,直接sudo kill PID。
方法二:强制解锁,命令
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
实际操作:使用方法二,强制解锁一次后问题依然,再执行一遍强制解锁后OK。