Chinaunix首页 | 论坛 | 博客
  • 博客访问: 102501
  • 博文数量: 31
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-18 11:29
文章分类

全部博文(31)

文章存档

2011年(1)

2010年(1)

2009年(2)

2008年(27)

我的朋友

分类: LINUX

2008-05-07 14:57:44

 

前些天移植完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_HOME\user\hello\下

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

 ir_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中,这样大大的降低了使用、开发的难度。

免费试用版可以到()下载。免费版支持ucLinux/Linux内核调试。


阅读(725) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~