首先运行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的使用(包括交叉编译)[原创]相关推荐

  1. MINIGUI图形界面开发入门,交叉编译,移植

    1引言 自 MiniGUI 从 1998 年底推出以来,越来越多的人开始选择 MiniGUI 在 Linux 上开发实时嵌入式系统.MiniGUI 系统也逐渐成熟,应用到各种嵌入式系统中,包括PDA. ...

  2. 设计师交流社区,让你的原创设计作品展示给世界

    集设(ijishe.com)设计师社区聚集了多个设计领域设计师的综合型社区.为设计师而生的设计交流平台;专注创意设计分享与设计技术交流,全力构建更全面的交流分享互动平台,共同寻找设计的灵魂之美,让你的 ...

  3. 如何交叉编译 移植 QT

    2019独角兽企业重金招聘Python工程师标准>>> QT简介就不多说了,是诺基亚的东东,需求:将QT移植到ARM开发环境 首先的准备工作: Linux环境: Linux 2.6. ...

  4. 薄盒 | 方文山原创数字潮玩《庞克猫史汀》系列正在展出中

    文章来源于薄盒 2021 年 11 月 21 日至 2022 年 2 月 20 日,著名词人方文山首次跨界举办艺术创作巡回个展<方道文山流>在北京索卡艺术中心进行展出. 本次展览展出内容包 ...

  5. 通过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% ...

  6. Compiler编译过程

    Compiler编译过程 1.原理 编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做"本地"编译器.另外,编译器也可以生成 ...

  7. C/C++包管理工具Conan简介

        Conan是一个开源的.跨平台的.去中心化的C和C++包管理器,它的源码在https://github.com/conan-io/conan ,License为MIT,最新发布版本为1.38. ...

  8. 使用inetaddress测试目标可达性_白盒测试工具―Winams介绍

    CoverageMaster winAMS : 适用于嵌入式目标机代码的单元测试工具 全面支持嵌入式微机!验证嵌入式C/C++软件 实施以模块为单位的自动化单元测试工具 不需要HookCode 直接使 ...

  9. 1024 程序员节重要议程曝光,开源技术英雄会聊开源“真心话”

    10 月 23-25 日,由 CSDN 等多家单位精心筹划的"长沙 · 中国 1024 程序员节"将盛大举行.程序员节活动以开源为主议题,包括:2场岳麓尖峰对话:2020 开源技术 ...

最新文章

  1. 历年计算机一级考试题库及答案,全国计算机一级考试试题库及答案
  2. 《Java程序员,上班那点事儿》书名的由来
  3. innobackupex 数据库备份
  4. 华为交换机静态路由配置案例_快速了解配置三层交换机策略路由配置
  5. 表单相关标签之textarea,select
  6. 商品包含资源和劳动两部分内容
  7. Prescan(七):prescan中air传感器的配置
  8. Oracle 11g 创建数据库
  9. Linux与Windows设置共享文件夹的实现
  10. 计算机打不开硬盘,电脑硬盘打不开的原因 如何解决电脑硬盘问题
  11. 小白白红队初成长(7)win权限提升
  12. Second season seventh episode,Ross finds out Rachel like him,what will he do???
  13. 一名中专生的坎坷程序人生(上)
  14. 百度百家号作者昵称、ID、粉丝数量获取
  15. Java综合练习小项目——快递柜
  16. 解决Ubuntu系统下的VMware Workstation无法打开虚拟网络编辑器界面的问题
  17. Excel函数大全(Excel Function List)-Part 1
  18. vector做函数参数和普通数组做函数参数有什么区别
  19. Spark-000讲:What is Spark ?
  20. PostgreSQL 10.0 preview 主动防御 - 禁止执行全表删除、更新(可配置)

热门文章

  1. uml+oopc嵌入式c语言开发精讲_新的程序开发模式出现,传统的嵌入式C语言程序员快要灭绝了?...
  2. postgre 生成数据库html文档_还在手动整理数据库文档?试试这个工具
  3. 中国企业500强完整榜单,请为自己和孩子收藏
  4. 这才是厉害程序员的标配!
  5. 工作中99%能用到的git命令
  6. 6818 开发板 配置 ubuntu 桌面环境 与 ROS
  7. SQL Server2016 新功能之SQL安装篇
  8. arduino彩灯计时器电路_蓝牙彩灯再升级(加音乐播放功能)
  9. 微信支付亲属卡新增“其他亲人”选项 “子女”增加至三张
  10. 外媒:特斯拉2.5万美元新型电动车拟2023年推出 命名Model Q