本文说明在Linux主机上构建ARM开发用最新C 编译环境的方法。
安装Ubuntu主机
安装虚拟机软件
从VitualBox官网下载最新的VirtualBox。
代码语言:javascript复制https://www.virtualbox.org/wiki/Downloads
具体的安装包根据正在使用的操作系统决定。
安装Ubuntu操作系统
下载并安装Ubuntu
交叉编译环境我们选择最新的Ubuntu操作系统,它可以从以下地址下载:
代码语言:javascript复制https://ubuntu.com/#download
接下来的说明以Ubuntu Desktop 19.10为例进行,18.04也没有问题。
配置网络
由于需要共享开发目录,因此将虚拟机的网络设定为"桥接网卡"模式。
安装交叉编译软件(gcc/g )
修改镜像服务器列表
打开安装包服务器列表文件:
代码语言:javascript复制sudo vi /etc/apt/sources.list
增加镜像服务器
在srouce.list最后增加以下内容:
代码语言:javascript复制deb http://th.archive.ubuntu.com/ubuntu bionic-updates main universe
安装g /gcc
代码语言:javascript复制sudo apt-get install gcc-8-arm-linux-gnueabi
sudo apt-get install g -8-arm-linux-gnueabi
确认安装结果
在任意位置输入以下命令确认gcc-8-arm的安装情况:
代码语言:javascript复制arm-linux-gnueabi-gcc -v
正确安装gcc交叉编译器之后,应该出现以下信息:
代码语言:javascript复制Using built-in specs.
COLLECT_GCC=arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabi/8/lto-wrapper
Target: arm-linux-gnueabi
...
gcc version 8.3.0 (Ubuntu/Linaro 8.3.0-23ubuntu2)
主要关注第二行的COLLECT_GCC信息和最后一行的版本信息(版本可能略有不同)。
以同样的方式确认g -8的安装结果:
代码语言:javascript复制arm-linux-gnueabi-g -v
正确安装g 交叉编译器之后,应该出现以下信息:
代码语言:javascript复制Using built-in specs.
COLLECT_GCC=arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabi/8/lto-wrapper
Target: arm-linux-gnueabi
...
gcc version 8.3.0 (Ubuntu/Linaro 8.3.0-23ubuntu2)
主要关注第二行的COLLECT_GCC信息和最后一行的版本信息(版本可能略有不同)。
参考信息:
gcc-8:
代码语言:javascript复制https://packages.ubuntu.com/bionic-updates/amd64/gcc-8-arm-linux-gnueabi/download
g -8:
代码语言:javascript复制https://packages.ubuntu.com/bionic-updates/amd64/g -8-arm-linux-gnueabi/download
安装Eclipse CDT
下载EclipseCDT
进入下面的网页:
代码语言:javascript复制https://www.eclipse.org/downloads/packages/
选择下图红框中的Eclipse IDE for C/C Developers:
由于要在Ubuntu上运行这个开发环境,因此选择[Linux 64-bit]进行下载。
安装EclipseCDT
在适当的位置使用以下命令解压缩安装包(表明可能略有不同)。
代码语言:javascript复制tar -zxvf eclipse-cpp-2019-12-R-linux-gtk-x86_64.tar.gz
进入加压缩得到的eclipse目录,启动eclipse:
代码语言:javascript复制./eclipse
如果不能成功启动,一般就是Java环境不具备,自行安装jre或者jdk即可。
建立交叉编译项目
构建项目
进入加压缩得到的eclipse目录,启动eclipse:
代码语言:javascript复制./eclipse
如下图选择工作目录并按下[Launch]按钮:
通过如下菜单选择创建新项目:
代码语言:javascript复制[File]-[New]-[Project]
选择[C/C Project]作为项目类型,进入下一步:
选择[C ManagedBuild]之后,进入下一步:
选择[Cross GCC]之后进入下一步:
直接进入下一步:
在下面的画面中配置交叉编译器,之后按下[Finish]结束。
配置内容:
1.在[Cross compiler prefix]编辑框中输入[arm-linux-gnueabi-]
2.为[Cross complier path:]项目选择[usrbin].
编写验证程序
参照下图为arm_cpp项目添加arm_cpp.cpp文件:
编辑以下内容:
代码语言:javascript复制#include<iostream>
int main()
{
std::cout << "Hello GCC/G Compiler!" << std::endl;
return 0;
}
通过以下菜单编译arm_cpp工程:
代码语言:javascript复制[Project]-[Build Project]
在eclipse的Console栏中出现如下内容()就表示大功告成!
代码语言:javascript复制16:29:17 **** Build of configuration Debug for project arm_cpp ****
make all
Building file: ../arm.cpp
Invoking: Cross G Compiler
arm-linux-gnueabi-g -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"arm.d" -MT"arm.o" -o "arm.o" "../arm.cpp"
Finished building: ../arm.cpp
Building target: arm_cpp
Invoking: Cross G Linker
arm-linux-gnueabi-g -o "arm_cpp" ./arm.o
Finished building target: arm_cpp
16:29:17 Build Finished. 0 errors, 0 warnings. (took 382ms)
觉得本文有帮助?请分享给更多人。
关注【面向对象思考】轻松学习每一天!
面向对象开发,面向对象思考!