前言

继上一篇博客已经很长时间没更新了,这段时间空下来可以在继续跟大家共同学习共同进步了,在这之间的时间有很多朋友关注着,也加了我QQ问了一些问题,我最近也会把大家问的问题收集下来,然后做个集锦,相信大家第一次搞这个肯定会碰到一些问题。
这篇博客主要来说一下,在windows下面怎么编写,编译linux代码,我像很多人也习惯操作windows下的SDK软件,其实不论linux下的sdk或者是windows下的SDK都是大同小异的。

Step0 准备工作

在新建工程之前还需要做一些准备工作,首先我们要理清楚思路,在windows下编写linux应用,这个应用肯定是跟你的板卡相关的,所以,肯定有一些库什么的需要调用,这个就是上一个博客说到的sysroot,这个里面其实就是根据你的工程生成的一个根文件目录,这个文件加里面的东西就是在你配置工程的时候选择的一些库,或者本来自带的一些库文件。至于怎么生成sysroot我在之前的博客里面也说了,这里就不赘述了。在linux虚拟机里面通过petalinux工具生成一个sysroot文件夹,然后将sysroot文件夹压缩成压缩包,如下所示:
在这里插入图片描述
将这个压缩包拷贝到windows下,我们在windows下新建个文件夹存放工程文件
在这里插入图片描述
解压缩这个文件,推荐使用管理员模式运行WINRAR
在这里插入图片描述
解压缩完成之后的路径如下:
在这里插入图片描述

Step1

打开windows下的SDK,这里选择我们要放应用程序的文件夹:
在这里插入图片描述
接着新建应用程序:
在这里插入图片描述
如下所示设置参数:
在这里插入图片描述
这里的Linux System Root选择的文件夹路径是:
I:\linux-workspace\sysroot\sysroot\cortexa9hf-neon-xilinx-linux-gnueabi
就是解压缩的那个文件夹的位置

点击Next,选择Linux Hello World,然后点击Finish结束新建Linux应用程序。
在这里插入图片描述

Step2 配置参数

生成完毕后编译会发现有错误,没关系,等参数设置完成之后在编译就会消失了。
右键工程,选择C++ Build Settings,打开配置对话框,接着选择下图中红框所示:
在这里插入图片描述
在右边看见Linker Flags就对了,我们就是要填写一个路径进去,按照下面的方式填写:
–sysroot=" I:\linux-workspace\sysroot\sysroot\cortexa9hf-neon-xilinx-linux-gnueabi "
在这里插入图片描述
这个路径就是刚才的sysroot解压缩的那个路径,点击OK之后,再次编译,就会发现错误已经消失了,成功生成了elf文件
在这里插入图片描述
其实到这里就已经结束了,下面再说下如果不是helloworld这种简单的程序,在实际中肯定是需要个种库的,不如说math,pthread这些,我就以math来做解释。

Step3 添加库配置

我们先在程序里面加入要用到math数学库的语句以及头文件:

#include <stdio.h>
#include "math.h"

int main()
{
	float a=4;
	float b=0;

    b=sqrt(a);

    printf("res:%f\n",b);

    return 0;
}

直接编译会发现,不通过
在这里插入图片描述
因为我们没有加入math数学库导致的,加入数学库的方法也很简单,右键工程,选择C++ Build Settings,打开配置对话框,然后选择libraries:
在这里插入图片描述
然后在后边的框框里面选择加号的那个图标:
在这里插入图片描述
输入m,点击确定,
在这里插入图片描述
再次编译就可以通过了,而且可以跟踪到sqrt这个函数了。
这里说明一下,在这个输入库的地方一般输入-l之后的参数就可以了,如果是要添加pthread的库,就输入pthread,不需要输入-lphtread。

总结

总的来说在windows下面配置跟linux下面差不多,好处就是在windows下面我们可以把虚拟机关闭,这样可以节省电脑资源,而且在windows下的sdk编辑更方便,排版也比较舒适。
联系方式:839089604@qq.com

Logo

更多推荐