与Skyeye相关的十大问题
1. uClinux/user下面的APPs的C库是用ulibc还是glibc?或是由用户编译uClinux自己选择。2. uClinux中的linux-2.x.x内核源码是官方正式版本还是uClinux特定的(经过修改的)
3. Skyeye基于ARMLinux的ep9321的文件系统怎样才能使用busybox作为其shell而不是用uClinux的shell。可不可以单独编译busybox用arm-elf-gcc 4. Can I complie ulibc singlely? that is, I complied ulibc with static libs or shared libs. After compliing, there were libxxx.a or libxss.so in uClibc/lib/. if I complied other Apps with ulibc, I just edit Makefile inothers DIRS to make others Apps use these libxxx.a or libxxx.so
5. It's well known that there is tools named as rootbuild for ulibc, but as for me ,I still could not complie it successfully 1. you can select glic or uClibc in menuconfig
2. hacked linux kernel for no-mmu
3. yes, you can compile busybox alone. How to do it , you can google or see some old posts about make ramdisk
4. Yes , you can get libc.a from compiled uClibc
5. Sorry , I do not know what is your problem you encountered. So can not give you a correct reply. 6. How do you make filesystem based on ep9312 with busybox(i.e since filesystem with support with Busybox not only has vary different colour for every shell but supports TAB , and so on). Well, I certainly known that how to make cramfs/ramdisk/quanfs filesystem because I once made 32M filesystem with linux base on VIA which is X86 architecture, the Apps support firefox/Mplayer/Remote accessetc. I done like below, so then I could see eveything:
#mount ep9312/linux -o loop /mnt/hda5
#
7. What's different between complitation of buildroot and uCLinux alone? It seem that the Buildroot could generate romfs with ulibc, In the same time ,uCliux could also to do this. As for answer:
2 >You mean that if I fetch the latest version of kernel from offical to uCLinux/ , it could not support MMUless of CPU, Well, the uClinux source with linux-2.x.x only supports MMUless of CPU.
4 >You mean that if I complied othe Apps such as MiniGUI/Microwindows/Xine ...I justedited the Makefile as follow:
...
INC = -I/opt/ulibc/Include
LDFLAGS = -I/opt/ulibc/lib
...
So then these Apps could move to uClinux for running, All right ? As for answer:
5 >Well, I currently posted my error message to BBS as follow:
...
CC libc/misc/internals/__uClibc_main.os
CC libc/misc/pthread/weaks.os
CC libc/stdlib/atexit.os
AS lib/crt1.o
AS lib/Scrt1.o
AS lib/crti.o
AS lib/crtn.o
STRIP -x -R .note -R .comment lib/libc.a
AR cr lib/libc.a
AR cr lib/uclibc_nonshared.a
AR cr libc/libc_so.a
LD libuClibc-0.9.28.so
libc/libc_so.a(ioperm.os): In function `__GI_ioperm':
ioperm.c:(.text+0x1d0): undefined reference to `__GI_strcmp'
libc/libc_so.a(sigaction.os): In function `sigaction':
sigaction.c:(.text+0x38): undefined reference to `__GI_memcpy'
libc/libc_so.a(getdnnm.os): In function `__GI_getdomainname':
getdnnm.c:(.text+0x38): undefined reference to `__GI_strlen'
libc/libc_so.a(longjmp.os): In function `_longjmp':
longjmp.c:(.text+0x34): undefined reference to `__GI___longjmp'
libc/libc_so.a(lockf.os): In function `__GI_lockf':
lockf.c:(.text+0x20): undefined reference to `__GI_memset'
libc/libc_so.a(glob.os): In function `collated_compare':
glob.c:(.text+0x1e8): undefined reference to `__GI_strcoll'
libc/libc_so.a(regex_old.os): In function `byte_re_match_2_internal':
regex_old.c:(.text+0x3f9c): undefined reference to `__GI_memcmp'
libc/libc_so.a(syslog.os): In function `__GI_vsyslog':
syslog.c:(.text+0x4a4): undefined reference to `__GI_memmove'
libc/libc_so.a(getttyent.os): In function `__GI_getttyent':
getttyent.c:(.text+0x320): undefined reference to `__GI_strncmp'
libc/libc_so.a(popen.os): In function `popen':
popen.c:(.text+0xcc): undefined reference to `__GI_vfork'
libc/libc_so.a(rcmd.os): In function `rcmd':
rcmd.c:(.text+0x248): undefined reference to `__GI_bcopy'
libc/libc_so.a(getpt.os): In function `__bsd_getpt':
getpt.c:(.text+0x20): undefined reference to `__mempcpy'
getpt.c:(.text+0x6c): undefined reference to `__open'
make: *** Error 1
make: Leaving directory `/mnt/hda7/FC3/buildroot/toolchain_build_arm/uClibc'
make: *** Error 2
make: Leaving directory `/mnt/hda7/FC3/buildroot/toolchain_build_arm/uClibc'
make: *** Error 2
#
BTW, I just type "make menuconfig " enter into config Menu and select ARM CPU as target but for do nothing , save and exit .
Best regard. Well, I think that I have a bit understanding of Buildroot tool .In my mind Buildroot can generated root filesystem expect vmlinuz .that is,The complitation of Buildroot only genrated root filesystem ,In other word, the vmlinuz be complied alone. On the other hand, complitation of uClinux could generated both root filesystem and vmlinuz .all right?
Best regard, thanks in advance For your question 5: I can not give you anwser directly. It seems possiblely you miss some library when compile the libc/libc_so.a. So you can grep some missing symbol to seek why? maybe something should be selected in the menuconfig of uClibc. A quick way to solve it sould compile uClibc to static library, I guess. For your question 2: It is hard to say if linux-2.6 can support NOMMU processor. Some maybe can , some not. According to my experience, in mainline kernel (kernel.org) need to some patch to support NOMMU processors. The best wayis touse diff tools to see the difference between them.
For your question 4, you can do it,but not recommend . Since there exist some lib in your toolchain that has the same function with uClibc. Which one be used is due to their position in compile command line. So some application maybe use the lib in toolchain, some maybe use lib in uClibc . That will cause chaos. Ow,ow!!!.Thanks your so deeply response. Well, I complied Buildroot eventually, the complied error message as I mentioned above is that I miss a packet which is essential for compiling uCLibc succesfully, That is ,uClibc-0.9.28. So then , I want to share the victory fruits with anybody whom once encounted the same problem.
1> Enter into ../buildroot
2> make menuconfig, select your target.ow!!! It is important that mask uClibc option
That is , press N when you scrolled to option of uClibc .NOT "Y"-->save and exit
3> make
4> Oh, my god, The root filesystem of which I dreamed was generated , Enter into toolchan_build_arm/uCLibc/---->recompiled it with support Locale (i.g it seems like about Lanauage support, I do not remember)
5> Ok, Have a rest ,go to the chicken for drinking a cup of tea or playing game, The whole process would kill 10 mintues, aHA!!!
6> Have a fun! 1: 好景不长,对于Buildroot中uClibc只能静态编译成功(成功生成目标系统文件系统和内核镜像), 共享库编译失败;而单独对源码包的uClibc编译时静态和共享都不成功。顺便提一下, 如果目标系统选择的是类似ARM的不带MMU的平台,那么uClibc根本不提供共享库编译的选项,同时单独对源码包交叉编译时自己必须给出交叉编译器,如arm-elf-gcc/m68k-elf-gcc: make CROSS=arm-elf- ,而对Buildroot中的uClibc编译时,只需直接敲:make,这时Buildroot自己会选择交叉编译器。
2: 无论是以何种方式对uClibc 进行编译都不能在uClinux上跑除非加入了elf2flat选项, 因为uClinux不支持elf格式,而uClibc默认的编译格式是elf的 。
页:
[1]