ZYNQ-Linux学习笔记(6)-Windows下SDK编写linux应用程序 Petalinux 2018.2
前言继上一篇博客已经很长时间没更新了,这段时间空下来可以在继续跟大家共同学习共同进步了,在这之间的时间有很多朋友关注着,也加了我QQ问了一些问题,我最近也会把大家问的问题收集下来,然后做个集锦,相信大家第一次搞这个肯定会碰到一些问题。这篇博客主要来说一下,在windows下面怎么编写,编译linux代码,我像很多人也习惯操作windows下的SDK软件,其实不论linux下的sdk或者是win..
前言
继上一篇博客已经很长时间没更新了,这段时间空下来可以在继续跟大家共同学习共同进步了,在这之间的时间有很多朋友关注着,也加了我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
更多推荐
所有评论(0)