如何将自己的应用程序编译到uCLinux/Linux中

导读:
  
  前些天移植完uCLinux后想自己写LCD应用程序并编译到uCLinux的romfs中,在网络中搜索了半天,愣是没找到一篇相关的介绍,而关于Makefile的编写的资料倒是很多,看了好长时间也没什么用处。最好经摸索思考,终于成功,特写出方法供大家参考。
  注意:OS_HOME为您的uCLinux/Linux源代码根目录。
   一、 编写自己的源程序代码:
  uCLinux/Linux应用程序通常存放在OS_HOME/user目录下,我们在该目录下创建一个Hello目录,并创建Hello.c文件,输入以下代码,该程序即大家最常见的Hello world!。
  Hello world应用程序
  Hello.c
  #include
  #include
  void main()
  {
  printf(“Hello world!”);
  }
  --------------------------------------------------------------------------------------------
  二、 为Hello world 编写Makefile 文件。该文件存放在OS_HOMEuserhello下
  Makefile
  --------------------------------------------------------------------------------------------
  #########################################################
  # uclinux project type.
  #########################################################
  EXEC = Hello
  OBJS = Hello.o
  CFLAGS += -I.
  all: $(EXEC)
  $(EXEC): $(OBJS)
  $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
  romfs:
  $(ROMFSINST) /bin/$(EXEC)
  clean:
  -rm -f $(EXEC) *.elf *.gdb *.o
  -------------------------------------------------------------------------------------------
  上面的代码我就不解释了,大家参考相关文件,注意Hello为可执行文件名,Hello.o为目标文件名,大家可以根据自己的工程来修改。
   三、 修改uCLinux/Linux 的相关配置文件。
  这里需要修改的文件有:OS_HOME/user/Makefile,OS_HOME/config/config.in两个文件,下面分别针对uCLinux和Linux讲解
  1. uCLinux中修改OS_HOME/user/Makefile文件
  打开OS_HOME/user/Makefile:
  --------------------------------------------------------------------------------------------
  #
  # Makefile -- Build instructions for user level apps
  #
  .EXPORT_ALL_VARIABLES:
  #
  # Include architecture specific build rules.
  #
  ifndef ROOTDIR
  ROOTDIR=..
  endif
  UCLINUX_BUILD_USER=1
  include $(LINUX_CONFIG)
  include $(CONFIG_CONFIG)
  include $(ARCH_CONFIG)
  -include $(MODULES_CONFIG)
  VEND=$(ROOTDIR)/vendors
  #
  # must run the vendor build first
  #
  dir_y = $(VEND)/$(CONFIG_VENDOR)/$(CONFIG_PRODUCT)/.
  dir_n =
  dir_ =
  dir_$(CONFIG_JFFS_FS) += mtd-utils
  dir_$(CONFIG_JFFS2_FS) += mtd-utils
  ……(中间略去)
  dir_$(CONFIG_USER_WLG3) += wlg3
  dir_$(CONFIG_USER_TEST111) += test111
  dir_$(CONFIG_USER_HELLO) += Hello
  dir_y +=
  all:
  for i in $(dir_y) ;do make -C $$i || exit $? ;done
  romfs:
  for i in $(dir_y) ;do make -C $$i romfs || exit $? ;done
  clean:
  -for i in $(dir_y) $(dir_n) $(dir_) ;do
  [ ! -d $$i ] || make -C $$i clean;
  Done
  添加代码,上面代码中灰底蓝字部分。该行代码中CONFIG_USER_HELLO定义一个符号,在其他文件中用到,+= Hello为应用程序的相对路径。
  2. uCLinux中修改OS_HOME/config/config.in
  打开OS_HOME/config/config.in文件
  --------------------------------------------------------------------------------------------
  ##################################################################
  #
  # NOTE : it is fairly important that changes to this file consider their
  # effect on other platforms and default setups. If you can, only
  # add to the file, changing the name of a variable will break
  # many configurations.
  #
  #################################################################
  mainmenu_name "uClinux Application Configuration"
  #################################################################
  mainmenu_option next_comment
  comment 'Core Applications'
  bool 'init' CONFIG_USER_INIT_INIT
  ……(中间略去)
  endmenu
  #################################################################
  mainmenu_option next_comment
  comment 'Jian hua test project'
  bool 'bulud ucLinux project' CONFIG_USER_UCLINUXPRO
  endmenu
  #################################################################
  mainmenu_option next_comment
  comment 'Build my project:Hello'
  bool 'build project that named Hello' CONFIG_USER_HELLO
  endmenu
  #################################################################
  --------------------------------------------------------------------------------------------
  在该文件末尾添加代码如上中的灰底蓝字部分。comment 'Build my project:Hello' 用于添加一个名为“Build my project:Hello”的主菜单项,bool 'build project that named Hello' CONFIG_USER_HELLO用于在刚才建立的主菜单项下建立名为build project that named Hello的子菜单项,CONFIG_USER_HELLO必须和您添加在OS_HOME/user/Makefile文件中的符号相同。
  这样所有的文件就修改好了
  执行Make config 或make xconfig就可以重新配置uCLinux。
  
  
  
   四、 Linux 基本和ucLinux 相同,大家可以自己摸索,如果有什么问题可以和我联系。
  注意:大家在修改文件时一定要做好备份,以便恢复。使用UE之类的文本编辑器来编辑文件而且不要将其格式转化成DOS格式。
   五、 自动化的工程建立
  手动修改文件容易出错,而且效率低下。西安建华科技实业有限公司的新一代基于ARM的uCLinux/Linux集成开发环境SldView已经全面支持可视化自动化的工程管理。可以通过工程向导自动将工程添加到ucLinux/Linux中,这样大大的降低了使用、开发的难度。
  免费试用版可以到(Http://www.jhembed.com)下载。免费版支持ucLinux/Linux内核调试。
  技术支持Wangzitan@163.comQQ:63321560 MSN:wangzitan@Hotmail.com
   1、 设置uCLinux/Linux
  使用工具栏配置操作系统:
  
  
  
  2、 使用菜单〔工程/ 新工程〕启动工程向导
  步骤1、
  
  
  
  步骤2、
  
  
  
  步骤3、
  
  
  
  步骤4、
  
  
  
  这样我们创建的testwlg应用程序就被添加到ucLinux/Linux中,省去了编写大量的代码来配置应用程序
  您现在可以试用OS工具来重新编译linux。

本文转自
http://www.embeded.cn/article/355.htm
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值