(文中所用的路径为uclinux安装的相对路径,比如:/uClinux-Samsung)
编译uclinux并运行成功后,下一步的工作就是写个最经典、最简单的程序“hello, world”。在uclinux下,当然要比在普通的OS下麻烦些。
(我用的是ANYWHERE-Ⅱ开发板,不同的开发板的过程应相似)
我基本是按照 Documentation/Adding-User-Apps-HOWTO的步骤进行,有部分修改。
1、在user目录下创建新目录 user/sample,用来存放源代码。写“hello.c”文件。(“hello.c”文件如何写,不用我说了吧。)
2、编辑文件 user/Makefile,增加下面这行
dir_$(CONFIG_USER_SAMPLE_HELLO)+= sample
具体增加到哪里,你打开文件就会发现相似的语句,按照字母顺序,放到合适的位置。
3、编辑文件 config/Configure.help, 增加下行
CONFIG_USER_SAMPLE_HELLO
A example C program. This Program print "hello, world" on screen.
注意:第2行以2个空格开头,总长度小于70个字符。
4、编辑文件 config/config.in
在 ‘Games’后添加新的部分
#########################
mainmenu_option next_comment
comment ‘Sample’
bool ‘hello’CONFIG_USER_SAMPLE_HELLO
endmenu
(注意这里的单引号字符不对,不要直接COPY这里的字符,最好自己手工输入,或参考文件中已有的行修改。)
5、创建合适的 user/sample/Makefile 文件
HELLO = hello
HELLOOBJS = hello.o
all: $(HELLO)
$(HELLO): $(HELLOOBJS)
$(CC) $(LDFLAGS) -o $@ $(HELLOOBJS) $(LDLOBS) 此句错误
$(CC) $(LDFLAGS) -o $@ $(HELLOOBJS) $(LDLIBS)
romfs:
["$(CONFIG_USER_SAMPLE_HELLO)" != y] || cp hello $(ROMFSDIR)/bin/.
clean:
-rm -f $(HELLO) *.elf *.gdb *.o
6、重新编译生成image.rom。注意在运行make config 或make menuconfig时选择生成"hello" 。
是否Makefile文件中修改如下:
romfs:
["$(CONFIG_USER_SAMPLE_HELLO)" == y] || cp hello $(ROMFSDIR)/bin/.
是否能默认选择“hello”,我还未试。
7、烧写image.rom,运行
>hello
即可看到输出“hello, world"
8、完毕。