众所周知,开发嵌入式linux程序首选桌面的linux操作系统,例如ubunt等,或者MACos,但是如果仅仅开发应用程序而不打算修改内核和驱动的话,也可以使用windows操作系统,使用eclipse+CDT+arm-linux-gcc(交叉编译器)进行开发。这样就省去了切换操作系统或者使用虚拟机的方法。
本文以i.mx6ul为例,介绍在windows下用C语言开发嵌入式linux程序的方法,不过该方法适用于所有在windows下的linux应用开发。
总共需要安装3个软件,分别是交叉编译器、JDK和eclipse for c/c++,当然如果安装过比较新版本的JDK可以跳过JDK安装步骤。
由于使用的CPU是i.mx6ul(PCIMX6G2C),因此使用的是arm-linux-gnueabihf交叉编译器。使用不同处理器建议选择和linux内核相同的交叉编译器,防止应用程序编译后运行确实库文件。
arm-linux-gnueabihf交叉编译器官方下载地址为:
http://releases.linaro.org/components/toolchain/binaries/4.9-2016.02/arm-linux-gnueabihf/
或者使用国内网友上传的地址:
https://pan.baidu.com/s/1nthwyq1
下载后安装即可,安装可以一路默认(安装在C盘)或者自选目录,如果更改安装目录请一定记得安装路径,后面要用到。
如果用到其他交叉编译器请自行搜索。
JDK下载地址为:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
推荐安装最新版本以保证新版本eclipse可正常运行。
eclipse下地址为:
https://www.eclipse.org/downloads/eclipse-packages/
选择Eclipse IDE for C/C++ Developers
根据系统版本选择32或者64位,下载后为绿色版本,解压即可运行。
第一次启动eclipse
双击 eclipse.exe,启动 Eclipse。第一次启动会要求设置 workspace,如下图所示,如果不希望每次都出现该提示框,可勾选界面中的复选框。
点击 OK,即可进入 Eclipse 的欢迎界面,关闭欢迎界面,进入如下图所示的 EclipseIDE for C/C++主界面。
点击主界面 File→New→C Project,选择创建 C 工程。 在弹出的工程创建界面,设置工程名称为“hello”,工程类型为“Empty Project”, Toolchain
选择使用“Cross GCC”, 如下图所示:
设置好后,点击 Next,在配置界面选中“Debug”和“Release”两个编译目标。点击 Next,设置交叉编译工具前缀和路径。
前缀和路径记得设置正确,本例子中使用的交叉编译器是arm-linux-gnueabihf因此设置前缀为:arm-linux-gnueabihf-
我使用的默认安装,所以路径为:C:\Program Files (x86)\Linaro\gcc-linaro-arm-linux-gnueabihf-4.9-2014.07\bin
注意路径要到bin目录下,即使有arm-linux-gnueabihf-gcc.exe所在的目录
然后点击 Finish 按钮,完成工程创建,得到一个空工程,接下来将添加一个 C 程序文件到该工程,并编写 C 代码。
点击 File→New→Source File,选择创建源文件,如下图
在 Source File 界面,设置文件名为“hello.c”,使用默认C模板,点击 Finish,得到添加了 hello.c 的工程 。
在其中添加如下代码并保存
#include <stdio.h> int main (int argc, char *argv[]) { printf(“hello world\n”); return 0; }
交叉编译工程
把代码编写完成,如果直接编译会出错,还需进行设置。点击 Project右Properties,打开工程属性设置窗口,点击 C/C++ Build 栏的 Tool Chain Editor, Current builder 设置为“CDT Internal Builder”,如下图所示,然后点击 Apply 保存,最后点击 OK 按钮。
然后点击 Project→Builder Project, 编译工程。 或者点击界面上的小锤子图标编译。
提示:编译之前记得保存,否则编译的是之前保存的工程。
在 Eclipse 主界面,点击 File→New→Other,在如下图所示的窗口选择建立“Remote System Explorer”,选择 Connection 后点击 Next。
在下一个界面选择“SSH Only”,选择建立 SSH 连接。
出现如下图所示的 SSH 连接设置界面,在 Host name 栏填写目标板的 IP 地址,如192.168.1.137, Connection name 栏会自动填写为目标板 IP 地址,也可以修改,点击 Finish完成设置。
建立完成,依然是 C/C++程序界面视图。点击 Window→Open Perspective→Other,在如下图所示的界面中选择“Remote System Explorer”,然后点击OK
Eclipse 将会切换到远程系统视图,如所示下图,可以看到连接名称为“192.168.1.137”的远程系统
右键单击连接名称,选择 Connect,出现 SSH 连接登录设置界面,在其中填写登录名和密码,如下图所示。为了方便以后连接,可选择保存密码。
第一次连接会出现警告,点击确定即可。
点击右上角监视窗口的 C/C++标签,切换到 C/C++视图,右键点击 hello 工程 Binaries下的“hello – [arm/le]”,选择 Copy,复制 hello 文件。
然后再点击监视窗口的“Remote System Explorer”标签,切换到远程系统视图,点击展开“/root”,找到 opt 文件夹,在右键菜单选择 Paste,将已复制的ello 文件粘贴到目标系统的“/opt”目录下。
运行文件
使用putty或者其他远程工具连接目标板,进入/opt目录下运行如下命令,赋予hello文件可执行权限
chomd +x hello
然后再运行该文件
./hello
即可看到打印的结果了
本文方案适用于所有在windows环境下开发linux程序的方法,不管是嵌入式ARM-linux,还是x86的linux或者服务器等都可行,但如果是后两者更推荐直接在linux下开发,毕竟更直观和方便。而嵌入式程序一般比较简单,而且无论在乌班图下还算在windows下都需要交叉编译等过程,因此在更熟悉的windows下开发更方便一些。
原创作品,未经权利人授权禁止转载。详情见转载须知。 举报文章
我要举报该内容理由
×