C++技巧:用kdevelop进行交叉编译的方法
首先提一下,我这篇文章,对于那些喜爱使用繁琐开发工具的达人们可以无视。
嵌入式的linux开发中,要建立的工程通常是三种,一是C或C++的工程。二是QT/E的工程,三是内核驱动模块工程。治理三种工程,网上流传的方法大多是用autotool或qmake工具生成MAKEFILE,这两种工具使用极其繁琐,尤其是autotool工具集,还是一“集”,其中,还要手工修改一些文件,其繁琐让人望而却步。而内核模块的MAKEFILE则更是要手工编辑才行了,在实际工作中,用上述进展工程治理,频频出错,严峻影响工作效率。而linux的很多发行版中都已集成了kdevelop这个IDE,其可以对工程进展很好的治理,而且它的编辑器又自带有代码缩进,代码补全等功能,非常好用。但是很多嵌入式工程师由于不知如何使用kdevelop进展嵌入式开发所需的穿插编译,而放弃了它,实在惋惜。我在实际工作中,也先是使用了上述的方法,苦不堪言,而后才模出了在kdevelop3中进展穿插编译的方法,工作效率明显提升。
我用的是Fedroa6的linux发行版,其自带kdevelop3和QT3的开发环境。下面的叙述都是在这个系统中实际可行的。在其它系统中应当也是这样的。
我们用来开发ARM嵌入式系统时,常用到三种工程模板,第一种是C
的简洁的hello模板,C++的简洁的hello工程模板。两个模板都是kdevelop调用autotool工具集进展工程治理的。关于这个工具集,网上有许多资料,就不多说了。其次种是QMAKE工程模板,它是调用QT的QMAKE 工具来进展工程治理的。第三种,就是linux内核模块工程模板,它由kdevelop自身来治理。下面,我就详细叙述一下如何在这种工程模板中进展穿插编译。
第一种:kdevelop调用autotool工具集进展工程治理,它要进展穿插编译的设置是最简洁的。只需在kdevelop的工程->工程选项的对话框中翻开配置选项栏作如下设置,在常规栏中,在“配置参数”中添加一项“--host=arm-linux”,在CPPFLAGS中,参加“-I/usr/local/arm/3.4.1/arm-linux/include”(这是我用的穿插编译器,你要设成你的,以下同),在LDFLAGS栏中,输入“-L/usr/local/arm/3.4.1/arm-linux/lib”,在C栏中,CC中参加“/usr/local/arm/3.4.1/bin/arm-linux-gcc”,在CPP栏中,CXX中参加“/usr/local/arm/3.4.1/bin/arm-linux-g++”。好了,选择构建->构建工程,穿插编译胜利。这种模板的设置是最简洁的,设置后不用做任何处理,即可编译胜利。(这是最简洁的,却是我最终才摸出来的,费了许多时间。主要是卡在配置参数中没有参加host=arm-linux,查了许多资料,才解决问题。)其次种:kdevelop是调用QMAKE进展工程治理的。设置到是简单的。就是在工程选项的MAKE选项中,添加四个环境变量。分
别是QMAKESPEC,值为“/opt/qt-3.3.4-target/mkspecs/qws/linux-arm-g++”,QTDIR,值为“/opt/qt-3.3.4-target”,QTINC,值为“/opt/qt-3.3.4-target/include”,QTLIB,值为“/opt/qt-3.3.4-target/include”,
其中/opt/qt-3.3.4-target,是我的穿插编译的QT/E库所在名目。好了,设置完了,但假如你之前曾经对工程编译过(在开发嵌入式QTE时,这是常有的状况,主要是为了测试一下界面的正确性),你这时再构建工程,就会报错,你要选择清理工程,还要删除工程所在名目下全部的makefile文件,然后再构建工程就会胜利。
第三种:kdevelop是自身在治理此工程的。没有什么可以设置的地方,要想它穿插编译,只有直接修改makefile文件了。翻开makefile 文件,将其中的KDIR = /lib/modules/$(CURRENT)/build更改为KDIR =/root/utu-linux_V1.5.3 (这是我的内核树所在名目。也就是穿插编译在开发板上使用的linux的那个名目),保存。好了,选择“构建工程”,穿插编译胜利。假如报错,则先选择“清理工程”即可。签于kdevelop 治理此项工程时不是很抱负,比方,无法进展多文件的驱动编译。建议用网上供应的makefile模板修改后直接替换原来的makefile。考试,大提示把模板附在下面。
ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /root/utu-linux_V1.5.3
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions PHONY: modules modules_install clean
else
obj-m := xray.o
xray-objs :=xray-driver.o hwdriver.o
makefile phony
endif
好了,到此,你根本就可以完全在kdevelop下进展嵌入式的开发和穿插编译了,怎么样,是不是觉得工作效率大大提高了呢。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。