交叉编译hello程序

将hello.c程序通过FileZillaClient,从windows上传输到Ubuntu上编译

通过mobaxterm远程登录Ubuntu,执行下面命令编译
gcc -o hello hello.c
通过file命令可以看出它是一个64位应用于x86-64系统的文件

arm板

通过串口程序操作开发板,首先将编译生成的hello程序拿到开发板上,这里要将Ubuntu的/home/book/nfs_roots  挂载在开发板/mnt下,访问/mnt就可以访问Ubuntu的该目录。

mount -t nfs -o nolock,version=3  192.168.1.137:/home/book/nfs_roots /mnt

注意在Ubuntu上也要把hello文件放在/home/book/nfs_roots下
然后在开发板上执行hello文件会发现出现错误,这是因为hello程序是为x86-64编译的,而不是为arm板编译的

这个时候我们要使用交叉编译工具
在Ubuntu上编译
arm-buildroot-linux-gnueabihf-gcc -o hello hello.c
得到的hello程序用file hello指令查看,可以看到这个是为arm编译的

交叉编译是指在一种操作系统上编译另一种不同操作系统的程序。在编译Windows程序时,我们需要使用一个交叉编译工具链,该工具链能够在当前操作系统上模拟出一个Windows环境,从而编译出可在Windows系统上运行的程序。 常见的交叉编译工具链有MinGW(Minimalist GNU for Windows)和Cygwin。MinGW是一个轻量级的工具链,它提供了一套GNU工具链和Windows API库,能够将C/C++源代码编译成在Windows系统上运行的可执行文件。而Cygwin则更像是一个完整的Windows下的GNU环境,它提供了大部分的Unix工具和库,可以在Windows上编译并运行类Unix的应用程序。 使用MinGW进行交叉编译,你需要先安装MinGW,然后配置环境变量,将MinGW的可执行文件路径添加到系统的PATH中。接着,在命令行中使用gcc或g++命令编译你的源代码。例如,要编译一个名为hello.c的C源代码文件,可以在命令行中执行以下命令:gcc hello.c -o hello.exe 然而,使用MinGW进行交叉编译可能需要一些额外的配置和依赖项,因此在编译复杂的项目时可能会遇到一些困难。 Cygwin相对于MinGW来说,提供了更全面的工具和库,但它的安装和配置可能会比较复杂。在使用Cygwin进行交叉编译时,你需要先安装Cygwin,并选择安装所需的开发工具和库。然后,像在Unix系统上一样使用gcc或g++命令编译你的源代码。 总的来说,交叉编译Windows程序需要选择合适的交叉编译工具链,并进行相应的安装和配置。之后,就可以使用该工具链来编译你的源代码,生成可在Windows系统上运行的可执行文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值