KDevelop的使用(包括交叉编译)[原创]
首先运行kdevelop:C/C++ IDE for C/C++ ,project ->new project ->all project ->c ->simple Hello world program ,然后在下面填入工程名,以及存放目录,next后填入自己的名字与邮箱等等继续next,最后finished。这样就完成了工程的创建。
创建交叉编译环境:进入project ->project options;configure options中的第一项general中的configure argument内容改为:--host=i686-pc-linux-gnu --build=mips-linux-elf ;build directory为存放生成的可执行文件的文件夹,可以不改,也可以自己修改为某个文件夹。Linker flags填入:-L/opt/uclibc-toolchain/gcc-3.3.6/toolchain-mips/lib -L$LIB_DIR/sip/lib -L$LIB_DIR/utils/uglib/lib -lsip -luglib -lpthread -lm -ldl ;第二项C中的compiler command填入mips-linux-gcc,C++中的compiler command改为 mips-linux-g++ ,compiler flags 填入-O0;
Debugger 中的debugging shell 中不填信息,在他下面的directory 中填入交叉编译的工具如:/opt/uclibc-toolchain/gcc-3.3.6/toolchain-mips/bin ,下面需要打钩的地方是1,2,4条内容,分别是显示静态成员,显示。。名字,enable floating toolbar。下面的run gdb script中填入 /home/archifone/source-code/trunk/londai_3300IP/archifone/remote-debug.gdb
然后剩下的就是修改src目录下的make.am文件,可以修改生成可执行文件的名称,比如改为iburst,并把iburst_SOURCES和iburst_LDFLAGS前面改为可执行文件的名称,即修改红色部分,然后修改其后所用到的文件,并修改include项。
我们项目make.am内容修改如下:(其中TOP_SRC和LIB_DIR在快捷方式中有说明)
INCLUDE中的top_srcdir是make.am中可用的路径变量,含义是工程最顶层目录,用于引用源程序。
bin_PROGRAMS = iburst
# set the include path found by configure
INCLUDES = -I$(top_srcdir)/src -I$(LIB_DIR)/sip/srtp/include \
-I$(LIB_DIR)/sip/libosip2/include -I$(LIB_DIR)/sip/eXosip/include -I$(LIB_DIR)/sip/ortp/include \
-I$(LIB_DIR)/sip/sipapi/include -I$(LIB_DIR)/sip/phapi/include -I$(LIB_DIR)/utils/uglib/include \
-I$(TOP_SRC)/dsp_plugin -I$(TOP_SRC)/uglib -I$(TOP_SRC)/sipapi -I$(TOP_SRC)/app \
-I$(TOP_SRC)/phapi/stun -I$(TOP_SRC)/libosip2/src/osipparser2 -I$(TOP_SRC)/libosip2/src/osip2 \
-I$(TOP_SRC)/eXosip/src -I$(TOP_SRC)/bsp/user/ifx/phone_application/hapi -I$(TOP_SRC)/phapi \
-I$(TOP_SRC)/ortp/src -I$(TOP_SRC)/libosip2/include -I$(TOP_SRC)/eXosip/include \
$(all_includes)
# the library search path.
iburst_LDFLAGS = -all-static -avoid-version -no-undefined $(all_libraries)
iburst_SOURCES = dsp_codec.c dspstream.c IFXHAPI.c LCD.c main.c call_record.c \
completion.c callpolicy.c phonebook.c dspstream.h timer.c dialplan.c volume.c \
encrypt.c observer.c menu_status.c network.c clk.c menu.c menu.h LCD.h phone.c \
phone.h observer.h menu_sysinfo.c menu_sysinfo.h
AM_CFLAGS = -DSCHEDULING_MODE=0 -DBLOCKING_MODE=0 \
-DNO_GSM -DNO_ILBC -DOSIP_MT -DHAVE_PTHREAD -DHAVE_SEMAPHORE_H -DPSEUDO_AEC -DUSE_SPXEC -DNULL=0 -DINCAIP_DSP \
-DWORDS_BIGENDIAN -D__BIG_ENDIAN
然后制作快捷方式iburst.sh:其内容如下
#!/bin/sh
export TOP_SRC=/home/3300-TRM-CISCO/cisco_cisco/src/ /*这个在src目录下的make.am中用到,指定一个目录,使用export来定义 一个环境变量。这样做的目的是更加方便使用。*/
export LIB_DIR=/home/3300-TRM-CISCO/sip_stack/ /*同上,这里指明一个链接库*/
kdevelop /home/3300-TRM-CISCO/cisco_cisco/cisco_cisco.kdevelop & /*快捷方式,kdevelop所在目录*/
我们项目的src目录下有app,bsp,dsp_plugin三个目录,然后我们可以使用虚拟连接,在src目录下用ln -s建立项目需要使用到的文件,即iburst_SOURCES后所跟的文件。
至此,可以运行了。
安装和启动
使用apt-get可以很容易的得到KDevelop,具体如下:(以KDE为例)
1. apt-get build-dep gcc
2. apt-get install kdevelop3
3. 如果你无法获取这些软件包的信息,可以尝试修改/etc/apt/sources.lst
安装完成后,从开始菜单中就可以启动Kdevelop:
【开始】→【应用程序】→【软件开发】→【Kdevelop】
利用Kdevelop可以编写C和C++程序,它把编辑、编译、调试和运行集成到一起,给编程工作带来很
大方便。
基本步骤
一般而言,用Kdevelop编程大体要经历如下几个步骤。编程是比较复杂的,很难一次成功,这些步骤
可能要反复进行多次。
第一步,新建工程
可以通过菜单操作启动相应的向导程序,借助它完成工程的初建工作。
【Project】→【New Project】
在新建工程过程中,主要需要指定工程文件保存位置、工程名称、工程类型,并且可以填写编程作者
的信息。根据所选工程类型(比如,是文本界面的程序还是图形界面的程序,是C程序还是C++程序),向导程序会自动生成一批模板文件。
第二步,编辑程序文件
向导程序一般会创建一些程序文件,应该对这些文件进行编辑以满足特定的编程需要。
还可以执行菜单操作来增加新的文件。
【File】→【New】
上述操作后,会出现一个对话框,用于指定文件名和文件类型。根据文件类型的不同,会自动设定合
适的扩展名。注意,“Add to project”复选框应该勾选上以确保新文件被加入到当前的工程中。
第三步,生成源码结构
在编辑好程序文件后,要先借助GNU Build System生成系统生成源码结构。在增加了新文件(或目
录)、修改了文件(或目录)名、改变文件的保存位置之后,都应该重新生成源码结构。具体而言,生成源码结构包括autoconf、automake等操作,把每个子目录的Makefile.am变成了Makefile.in。具有源码结构的程序文件包可以在任何UNIX、LINUX的系统上使用简单的命令(即configure/make/make install等)进行配置、编译、连接和安装。
可以执行菜单操作来生成源码结构:
【Build】→【Run automake&conf】
第四步,配置,即运行configure
configure是一个脚本,用来确定所处系统的细节,比如使用何种编译器、何种库,以及编译器和库的
保存位置,并把Makefile.in的相应部分进行替换,形成Makefile。
可以执行菜单操作来进行配置:
【Build】→【Run configure】
第五步,编译连接
执行菜单操作【Build】→【Built Project】即可完成编译连接,形成可执行文件。默认情况下,这种可执行文件是带有源码调试符号的。
对于多文件的程序,一般需要对每一个文件分别进行编译生成目标文件。当每个文件的编译通过之后,再统一进行编译连接。单独编译当前正在编辑的文件的菜单操作是:
【Build】→【Compile File】
第六步,运行
如果想在KDevelop的控制下运行已编译连接好的程序,可以执行菜单操作:
【Build】→【Excecute program】
如果想单独运行程序,则需要先安装,然后在命令行中输入相应的可执行文件的名字(一般来讲,就是
工程的名字)即可。KDevelop会把可执行文件放在/usr/local/bin之中
【Build】→【Install】
编写程序文件
通过菜单操作【Project】→【New Project】启动新建工程向导程序,选择工程类型,并指定 工程名称及其保存位置,如图所示。接下来一路点击Next即可完成工程的创建工作。
向导程序会自动生成一个含有主函数的文件。以此文件是一个模板,在它的基础上修改并添加代码,
即可编写需要的程序。
编译
程序写好后,应该把文件保存起来,然后按照前面提到的步骤,生成源码结构、配置、编译,即依次
执行如下菜单操作:
【Build】→【Run automake&conf】
【Build】→【Run configure】
【Build】→【Compile File】
每一个操作若能正常完成,在Messages窗口中会出现Success的提示。如果没有Success的提示,则表明相应的操作失败,应查明原因。
一般来讲,生成源码结构和配置这两个操作都能顺利通过。
如果编译连接是首次进行,则一般会失败,因为很少有人能一次写出没有任何语法错误的程序。查看
Messages窗口中的提示信息,可以了解哪些地方出现了语法错误。单击某一条错误提示信息,KDevelop会自动把光标定位到发生该错误的语句上。
依据错误提示,修正程序中的语法错误,然后再次尝试编译,直到出现Success的提示。
经常出现的一种情况是,程序上的一个语法错误会导致多条错误信息的出现。因此,应该把第一条错
误信息认真处理好,再从随后的错误信息中随机选择几条加以处理,然后就再次尝试编译,看还有没有错误信息。如此反复多次,直到把所有的错误提示消除掉,编译就成功了。不要把所有错误信息都依次处理完再尝试编译,那样的效率比较低。
生成可执行文件
编译成功后,执行菜单操作【Build】→【Built Project】即可生成相应的生成可执行文件。
调试
接下来,可以执行菜单操作【Build】→【Excecute program】试运行程序。这种运行是在KDevelop的控制下进行的。因此,如果出现“死循环”,可以执行菜单操作【Build】→【Stop】或按Esc键即可中止程序的运行。
如果在程序中存在逻辑错误,就得不到期望的结果。逻辑错误的排除比较困难。必须对程序进行仔细
的分析才能找到错误的原因。
一般的逻辑错误可以根据程序的运行表现加以判断。比较深层次的逻辑错误则需要借助调试工具。
本章前面介绍的调试工具GNU gdb就是一个很好的工具,可以用它对程序进行仔细分析,查找逻辑错
误的根源。默认情况下,经过【Build】→【Built Project】操作之后,可以在工程目录下的/debug/src/中找到带源代码调试符号的可执行文件。
发现逻辑错误后,就要修改程序,重新编译连接。然后再试运行。如果仍然得不到期望的结果,说明
程序中还有逻辑错误,应再次进行分析。如此反复多次,直到消除全部的逻辑错误。
发布可执行文件
如果只想发布程序的可执行文件,可以先调整项目的编译连接选项,选择优化编译的方式。这样可以
得到更小更快的可执行文件。
可以通过菜单【Project】→【Build Configuration】修改编译连接选项。此菜单之下有三种选项,默认为Debug,生成的可执行文件中含有源程序调试符号;还可以选择 Default或Optimized。选择Optimized时,编译连接时将进行优化,生成的可执行文件更小,执行起来也更快。
选择Debug时,可执行文件保存在工程目录下的/debug/src/中;选择Optimized时, 可执行文件保存在工程目录下的/optimized/src/中;选择Default时, 可执行文件保存在工程目录下的/src/中。
如果要发布可执行文件,应该选择Optimized的方式进行编译连接。
发布源程序
把工程目录及其中的所有文件打包即可形成源程序包。用户得到这个源程序包并解压后,不必安装KDevelop 就可以按标准方法进行编译和安装,即支持
configure,make,make install,make clean,make uninstall等命令。这个包也含有KDevelop的工程文件和其他相关的信息。因此,如果用户安装了KDevelop,可以直接打开该工程进行修改。
如何使用已有的源文件?
在KDevelop主窗口的右侧有一个Automake Manager标签。点击该标签,就可以看到本工程源文件所在的文件夹以及各文件。在列有文件的那个窗口上方有工具条,其中就是用来添加文件的。添加文件有两种方式,一种是链接(link)方式,另一种是复制(copy)方式。
KDevelop的使用(包括交叉编译)[原创]相关推荐
- MINIGUI图形界面开发入门,交叉编译,移植
1引言 自 MiniGUI 从 1998 年底推出以来,越来越多的人开始选择 MiniGUI 在 Linux 上开发实时嵌入式系统.MiniGUI 系统也逐渐成熟,应用到各种嵌入式系统中,包括PDA. ...
- 设计师交流社区,让你的原创设计作品展示给世界
集设(ijishe.com)设计师社区聚集了多个设计领域设计师的综合型社区.为设计师而生的设计交流平台;专注创意设计分享与设计技术交流,全力构建更全面的交流分享互动平台,共同寻找设计的灵魂之美,让你的 ...
- 如何交叉编译 移植 QT
2019独角兽企业重金招聘Python工程师标准>>> QT简介就不多说了,是诺基亚的东东,需求:将QT移植到ARM开发环境 首先的准备工作: Linux环境: Linux 2.6. ...
- 薄盒 | 方文山原创数字潮玩《庞克猫史汀》系列正在展出中
文章来源于薄盒 2021 年 11 月 21 日至 2022 年 2 月 20 日,著名词人方文山首次跨界举办艺术创作巡回个展<方道文山流>在北京索卡艺术中心进行展出. 本次展览展出内容包 ...
- 通过Ne10的交叉编译输入理解ndk-build
http://www.music-video.cn/2017/12/20/%E9%99%84%E5%BD%95a%EF%BC%9A%E9%80%9A%E8%BF%87ne10%E7%9A%84%E4% ...
- Compiler编译过程
Compiler编译过程 1.原理 编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做"本地"编译器.另外,编译器也可以生成 ...
- C/C++包管理工具Conan简介
Conan是一个开源的.跨平台的.去中心化的C和C++包管理器,它的源码在https://github.com/conan-io/conan ,License为MIT,最新发布版本为1.38. ...
- 使用inetaddress测试目标可达性_白盒测试工具―Winams介绍
CoverageMaster winAMS : 适用于嵌入式目标机代码的单元测试工具 全面支持嵌入式微机!验证嵌入式C/C++软件 实施以模块为单位的自动化单元测试工具 不需要HookCode 直接使 ...
- 1024 程序员节重要议程曝光,开源技术英雄会聊开源“真心话”
10 月 23-25 日,由 CSDN 等多家单位精心筹划的"长沙 · 中国 1024 程序员节"将盛大举行.程序员节活动以开源为主议题,包括:2场岳麓尖峰对话:2020 开源技术 ...
最新文章
- 历年计算机一级考试题库及答案,全国计算机一级考试试题库及答案
- 《Java程序员,上班那点事儿》书名的由来
- innobackupex 数据库备份
- 华为交换机静态路由配置案例_快速了解配置三层交换机策略路由配置
- 表单相关标签之textarea,select
- 商品包含资源和劳动两部分内容
- Prescan(七):prescan中air传感器的配置
- Oracle 11g 创建数据库
- Linux与Windows设置共享文件夹的实现
- 计算机打不开硬盘,电脑硬盘打不开的原因 如何解决电脑硬盘问题
- 小白白红队初成长(7)win权限提升
- Second season seventh episode,Ross finds out Rachel like him,what will he do???
- 一名中专生的坎坷程序人生(上)
- 百度百家号作者昵称、ID、粉丝数量获取
- Java综合练习小项目——快递柜
- 解决Ubuntu系统下的VMware Workstation无法打开虚拟网络编辑器界面的问题
- Excel函数大全(Excel Function List)-Part 1
- vector做函数参数和普通数组做函数参数有什么区别
- Spark-000讲:What is Spark ?
- PostgreSQL 10.0 preview 主动防御 - 禁止执行全表删除、更新(可配置)
热门文章
- uml+oopc嵌入式c语言开发精讲_新的程序开发模式出现,传统的嵌入式C语言程序员快要灭绝了?...
- postgre 生成数据库html文档_还在手动整理数据库文档?试试这个工具
- 中国企业500强完整榜单,请为自己和孩子收藏
- 这才是厉害程序员的标配!
- 工作中99%能用到的git命令
- 6818 开发板 配置 ubuntu 桌面环境 与 ROS
- SQL Server2016 新功能之SQL安装篇
- arduino彩灯计时器电路_蓝牙彩灯再升级(加音乐播放功能)
- 微信支付亲属卡新增“其他亲人”选项 “子女”增加至三张
- 外媒:特斯拉2.5万美元新型电动车拟2023年推出 命名Model Q