首页 论坛 博客
 
查看文章
 
标题:在uclinux 中添加自己应用程序的详细过程
2008-04-23 14:31:56

在uclinux 中添加自己应用程序的详细过程

( 文中所用的路径为uclinux 安装的相对路径, 比如: /uClinux-Samsung)   

编译uclinux并运行成功后,下一步的工作就是写个最经典、最简单的程序“ hello,  world” 。在uclin

ux下, 当然要比在普通的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)

PDF created with FinePrint pdfFactory trial version

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、完毕。

下一步要用GDB调试。成功了再写详细过程。

以后有什么经验大家多分享。

问题1:

我按照上述步骤,

在make user_only 时, 出现

make[2]: Leaving directory `/usr/linux/uClinux-Samsung/user/route'

make[2]: Entering directory `/usr/linux/uClinux-Samsung/user/sample'

Makefile• : *** missing separator. Stop.

make[2]: Leaving directory `/usr/linux/uClinux-Samsung/user/sample'

make[1]: *** [all] Error 2

make[1]: Leaving directory `/usr/linux/uClinux-Samsung/user'

make: *** [user_only] Error 2

还请二位指教: (已经成功编译了uclinux 得内核)

答:

可能是MAKEFILE 文件有错误, 你不要直接COPY 上面的MAKEFILE, 你应该参考系统中已经有的

MAKEFILE 文件, 格式有特殊要求的。我写的内容对, 但格式无法在这里表现。

你把MAKEFILE 改一下。

问题2:

俺也是照着上面的步骤下来, 结果在make user_only 的时候。出现错误, 错误信息如下:

Makefile□ :***missing separator . stop.

make[1]:***[all] Error 2

make:***[user_only] Error 2

这些信息我是通过make user_only 2>/Errormsg.txt 所得到的结果。

望各位兄台多多指教。谢谢!

答: 我有时间把MAKEFILE 文件写成TXT 文件让大家下载。

PDF created with FinePrint pdfFactory trial version

错误可能是写MAKEFILE 中没有在相应位置加上TAB。

问题3:

把任兄给的Makefile 文件拷贝到 usr/sample/ 目录下。

得到了另外一个错误信息:   

/opt/uClinux/arm-elf/bin/gld: cannot find -lc

collect2: ld returned 1 exit status

make[2]: *** [hello] Error 1

make[1]: *** [all] Error 2

make: *** [user_only] Error 2

任兄请多指教, GUN make 真的是好难伺候呐!  

BTW, 你说的在make menuconfig 时选择“ hello"这一步没有问题。但是根据你所说

是否Makefile 文件中修改如下:  

romfs: 

["$(CONFIG_USER_SAMPLE_HELLO)"==y]||cp hello $(ROMFSDIR)/bin/.

这个我怎么也不知道该怎么办, 只是手动的在uClinux 目录下的Makefile 文件中进行修改。不知道是不是

因为这个而出错, 请指教, 谢谢!  

__


本文引用通告地址:http://lxdlbs.spaces.eaw.com.cn/articles/trackback/item/86
类别:LINUX文章 | 浏览(170) 引用(0)
 
网友评论:
发表评论:
姓 名: [ 登陆 ]
内 容:
验证码: