[原创]在ubuntu7.10上搭建uClinux编译开发环境并用Skyeye进行仿真

内核编译和嵌入式产品的设计与开发
antonym55
帖子: 353
注册时间: 2007-04-03 9:52
联系:

#16

帖子 antonym55 » 2007-11-16 2:22

编译 uClinux-dist-20070130.tar.gz 问题不断

1. 我的是 arm-elf-gcc , 直接make的时候,用的是
make ARCH=arm CROSS_COMPILE=arm-linux- -j4 -C linux-2.6.x || exit 1
make[1]: arm-linux-gcc: Command not found

/bin/sh: arm-linux-gcc: not found

改为 make ARCH=arm CROSS_COMPILE=arm-elf- -j4 -C linux-2.6.x

OK

内核是linux-2.6.22 打了 linux-2.6.22-uc0-big.patch 的补丁

2. make ARCH=arm CROSS_COMPILE=arm-elf- -j4 -C linux-2.6.x 后提示
include/linux/compiler.h:44: #error Sorry, your compiler is too old/not recognized.

#if __GNUC__ >= 4
# include <linux/compiler-gcc4.h>
#elif __GNUC__ == 3 && __GNUC_MINOR__ >= 2
# include <linux/compiler-gcc3.h>
#else
# error Sorry, your compiler is too old/not recognized.
#endif
这里改为直接用 # include <linux/compiler-gcc4.h>

OK

但是不知道为什么不能识别
gcc version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)

3. 接下来是一堆, 不知怎么解决

arch/arm/kernel/asm-offsets.c: In function `main':
arch/arm/kernel/asm-offsets.c:47: parse error before `struct'
arch/arm/kernel/asm-offsets.c:49: parse error before `struct'
arch/arm/kernel/asm-offsets.c:50: parse error before `struct'
arch/arm/kernel/asm-offsets.c:51: parse error before `struct'
arch/arm/kernel/asm-offsets.c:52: parse error before `struct'
arch/arm/kernel/asm-offsets.c:53: parse error before `struct'
arch/arm/kernel/asm-offsets.c:54: parse error before `struct'
arch/arm/kernel/asm-offsets.c:55: parse error before `struct'
arch/arm/kernel/asm-offsets.c:56: parse error before `struct'
arch/arm/kernel/asm-offsets.c:57: parse error before `struct'
arch/arm/kernel/asm-offsets.c:58: parse error before `struct'
arch/arm/kernel/asm-offsets.c:59: parse error before `struct'
arch/arm/kernel/asm-offsets.c:60: parse error before `struct'
arch/arm/kernel/asm-offsets.c:68: parse error before `struct'
arch/arm/kernel/asm-offsets.c:69: parse error before `struct'
arch/arm/kernel/asm-offsets.c:70: parse error before `struct'
arch/arm/kernel/asm-offsets.c:71: parse error before `struct'
arch/arm/kernel/asm-offsets.c:72: parse error before `struct'
arch/arm/kernel/asm-offsets.c:73: parse error before `struct'
arch/arm/kernel/asm-offsets.c:74: parse error before `struct'
arch/arm/kernel/asm-offsets.c:75: parse error before `struct'
arch/arm/kernel/asm-offsets.c:76: parse error before `struct'
arch/arm/kernel/asm-offsets.c:77: parse error before `struct'
arch/arm/kernel/asm-offsets.c:78: parse error before `struct'
arch/arm/kernel/asm-offsets.c:79: parse error before `struct'
arch/arm/kernel/asm-offsets.c:80: parse error before `struct'
arch/arm/kernel/asm-offsets.c:81: parse error before `struct'
arch/arm/kernel/asm-offsets.c:82: parse error before `struct'
arch/arm/kernel/asm-offsets.c:83: parse error before `struct'
arch/arm/kernel/asm-offsets.c:84: parse error before `struct'
arch/arm/kernel/asm-offsets.c:85: parse error before `struct'
arch/arm/kernel/asm-offsets.c:92: parse error before `struct'
arch/arm/kernel/asm-offsets.c:93: parse error before `struct'
arch/arm/kernel/asm-offsets.c:102: parse error before `struct'
arch/arm/kernel/asm-offsets.c:103: parse error before `struct'
arch/arm/kernel/asm-offsets.c:104: parse error before `struct'
arch/arm/kernel/asm-offsets.c:105: parse error before `struct'
arch/arm/kernel/asm-offsets.c:108: parse error before `struct'
arch/arm/kernel/asm-offsets.c:109: parse error before `struct'
arch/arm/kernel/asm-offsets.c:110: parse error before `struct'


相关代码
int main(void)
{
DEFINE(TSK_ACTIVE_MM, offsetof(struct task_struct, active_mm)); 这里是47行
BLANK();
DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count));
DEFINE(TI_ADDR_LIMIT, offsetof(struct thread_info, addr_limit));
DEFINE(TI_TASK, offsetof(struct thread_info, task));
DEFINE(TI_EXEC_DOMAIN, offsetof(struct thread_info, exec_domain));
DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
DEFINE(TI_CPU_DOMAIN, offsetof(struct thread_info, cpu_domain));
DEFINE(TI_CPU_SAVE, offsetof(struct thread_info, cpu_context));
DEFINE(TI_USED_CP, offsetof(struct thread_info, used_cp));
DEFINE(TI_TP_VALUE, offsetof(struct thread_info, tp_value));
DEFINE(TI_FPSTATE, offsetof(struct thread_info, fpstate));
DEFINE(TI_VFPSTATE, offsetof(struct thread_info, vfpstate));
#ifdef CONFIG_IWMMXT
DEFINE(TI_IWMMXT_STATE, offsetof(struct thread_info, fpstate.iwmmxt));
头像
wenwu
帖子: 15
注册时间: 2006-12-20 14:52

#17

帖子 wenwu » 2007-11-16 13:12

error Sorry, your compiler is too old/not recognized.

2.6的内核需要高GCC版本。
gangdou
帖子: 18
注册时间: 2007-05-14 19:47

#18

帖子 gangdou » 2007-11-21 14:09

感谢楼主
为什么我用了make menuconfig 或make xconfig 后只出现了第一个菜单或窗口,以后就跟make config一样了.
而且有些配置在cygwin中没看到过,比如:
#
# using defaults found in extra/Configs/Config.default
#
*
* uClibc Configuration
*
Target Architecture
1. alpha (TARGET_alpha) (NEW)
2. arm (TARGET_arm) (NEW)
3. bfin (TARGET_bfin) (NEW)
4. cris (TARGET_cris) (NEW)
5. e1 (TARGET_e1) (NEW)
6. frv (TARGET_frv) (NEW)
7. h8300 (TARGET_h8300) (NEW)
> 8. i386 (TARGET_i386) (NEW)
9. i960 (TARGET_i960) (NEW)
10. m68k (TARGET_m68k) (NEW)
11. microblaze (TARGET_microblaze) (NEW)
12. mips (TARGET_mips) (NEW)
13. nios (TARGET_nios) (NEW)
14. nios2 (TARGET_nios2) (NEW)
15. powerpc (TARGET_powerpc) (NEW)
16. SuperH (TARGET_sh) (NEW)
17. sparc (TARGET_sparc) (NEW)
18. v850 (TARGET_v850) (NEW)
choice[1-18?]:

*
* Target Architecture Features and Options
*
Target Processor Type
> 1. Generic Arm (CONFIG_GENERIC_ARM) (NEW)
2. Arm 610 (CONFIG_ARM610) (NEW)
3. Arm 710 (CONFIG_ARM710) (NEW)
4. Arm 720T (CONFIG_ARM720T) (NEW)
5. Arm 920T (CONFIG_ARM920T) (NEW)
6. Arm 922T (CONFIG_ARM922T) (NEW)
7. Arm 926T (CONFIG_ARM926T) (NEW)
8. Intel StrongArm SA-110 (CONFIG_ARM_SA110) (NEW)
9. Intel StrongArm SA-1100 (CONFIG_ARM_SA1100) (NEW)
10. Intel Xscale (CONFIG_ARM_XSCALE) (NEW)
choice[1-10?]:

Linux kernel header location (KERNEL_SOURCE) [/usr/src/linux] (NEW)

*
* General Library Settings
*
Generate Position Independent Code (PIC) (DOPIC) [Y/n/?] (NEW)
Enable support for shared libraries (HAVE_SHARED) [Y/n/?] (NEW)
Compile native shared library loader (BUILD_UCLIBC_LDSO) [Y/n/?] (NEW)
Only load shared libraries which can share their text segment (FORCE_SHAREABLE_TEXT_SEGMENTS) [N/y/?] (NEW)
Native shared library loader 'ldd' support (LDSO_LDD_SUPPORT) [Y/n/?] (NEW)
Enable shared library loader cache (LDSO_CACHE_SUPPORT) [Y/n/?] (NEW)
Enable shared library loader preload file support (LDSO_PRELOAD_FILE_SUPPORT) [N/y/?] (NEW)
Shared library loader naming prefix (LDSO_BASE_FILENAME) [ld.so] (NEW)
Support global constructors and destructors (UCLIBC_CTOR_DTOR) [Y/n/?] (NEW)
POSIX Threading Support (UCLIBC_HAS_THREADS) [Y/n/?] (NEW)
Build pthreads debugging support (PTHREADS_DEBUG_SUPPORT) [N/y/?] (NEW)
Large File Support (UCLIBC_HAS_LFS) [Y/n/?] (NEW)
Malloc Implementation
> 1. malloc (MALLOC) (NEW)
2. malloc-simple (MALLOC_SIMPLE) (NEW)
choice[1-2?]:
Malloc returns live pointer for malloc(0) (MALLOC_GLIBC_COMPAT) [N/y/?] (NEW)
Dynamic atexit() Support (UCLIBC_DYNAMIC_ATEXIT) [Y/n/?] (NEW)
Shadow Password Support (HAS_SHADOW) [Y/n/?] (NEW)
Support only Unix 98 PTYs (UNIX98PTY_ONLY) [Y/n/?] (NEW)
Assume that /dev/pts is a devpts or devfs file system (ASSUME_DEVPTS) [Y/n/?] (NEW)
Support 'struct tm' timezone extension fields (UCLIBC_HAS_TM_EXTENSIONS) [Y/n/?] (NEW)
Enable caching of the last valid timezone 'TZ' string (UCLIBC_HAS_TZ_CACHING) [Y/n/?] (NEW)
Enable '/etc/TZ' file support to set a default timezone (uClibc-specific) (UCLIBC_HAS_TZ_FILE) [Y/n/?] (NEW)
Repeatedly read the '/etc/TZ' file (UCLIBC_HAS_TZ_FILE_READ_MANY) [Y/n/?] (NEW)
Path to the 'TZ' file for setting the global timezone (UCLIBC_TZ_FILE_PATH) [/etc/TZ] (NEW)

等等,
最后出现

make[1]: Entering directory `/mnt/hgfs/WinShared/src/uClinux-dist'
make ARCH= CROSS_COMPILE= -C linux-2.4.x menuconfig
make[2]: Entering directory `/mnt/hgfs/WinShared/src/uClinux-dist/linux-2.4.x'
Makefile:315: arch//Makefile: No such file or directory
make[2]: *** No rule to make target `arch//Makefile'. Stop.
make[2]: Leaving directory `/mnt/hgfs/WinShared/src/uClinux-dist/linux-2.4.x'
make[1]: *** [linux_menuconfig] Error 2
make[1]: Leaving directory `/mnt/hgfs/WinShared/src/uClinux-dist'
make: *** [menuconfig] Error 2

我选择了下面的选项:
Kernel选择2.4内核,Libc Version选择uC-libc
代码:
(linux-2.4.x) Kernel Version
(uC-libc) Libc Version
[ ] Default all settings (lose changes)
[ *] Customize Kernel Settings
[* ] Customize Vendor/User Settings
[ ] Update Default Vendor Settings

搞得头大了. 快坚持不住了.
头像
stlxv
论坛版主
帖子: 8275
注册时间: 2006-05-03 0:39
来自: المريخ

#19

帖子 stlxv » 2007-11-21 14:24

看累了,再来个调试的例子吧
PHP是最好的语言!不服来战!
头像
wenwu
帖子: 15
注册时间: 2006-12-20 14:52

#20

帖子 wenwu » 2007-11-24 21:29

stlxv 写了:看累了,再来个调试的例子吧
这两天太忙了,过段时间看看如果有时间就写一个更完整一点的总结出来。
hoarywolf
帖子: 15
注册时间: 2007-10-05 13:33

#21

帖子 hoarywolf » 2007-11-28 17:26

执行 sudo mount -o loop boot.rom /mnt/tmp/
提示:
mount: 您必须指定文件系统类型


怎么回事?
hulllo
帖子: 11
注册时间: 2007-05-20 14:07

#22

帖子 hulllo » 2007-12-12 23:10

我跟18楼出现的问题一样了.....
hulllo
帖子: 11
注册时间: 2007-05-20 14:07

#23

帖子 hulllo » 2007-12-13 0:33

hulllo 写了:我跟18楼出现的问题一样了.....
原来我uclinux目录在Windows分区下,
负责到Linux分区就没事了.
哈哈
头像
uusky
帖子: 159
注册时间: 2006-09-02 10:02

楼主!支持多发好贴。呵呵!

#24

帖子 uusky » 2007-12-23 1:03

楼主,好贴阿!

非常感谢,我通过LS的如此详细的说明,成功了。呵呵。不错哦!
bluce
帖子: 21
注册时间: 2007-08-19 9:04
来自: 上海

#25

帖子 bluce » 2007-12-23 20:14

tks!依楼主方法编译通过
成功!
free-of-linux
帖子: 221
注册时间: 2007-11-08 18:19

#26

帖子 free-of-linux » 2007-12-25 22:43

xiexie
yan__jiao
帖子: 2
注册时间: 2007-07-26 16:02

skyeye模拟lpc2200上跑uclinux的问题

#27

帖子 yan__jiao » 2007-12-27 14:32

严格地按步骤来了好几遍都是启动时停在Calibrating delay loop ...不动了。后来调试发现,中断不能正常响应。进不了__do_irq()这个函数。为什么?
Nakedpig
帖子: 154
注册时间: 2006-06-28 21:53

#28

帖子 Nakedpig » 2007-12-29 12:06

请教一下你们都用些什么样的开发板的?
kelvinhan
帖子: 173
注册时间: 2006-11-30 1:29

#29

帖子 kelvinhan » 2008-02-27 14:50

顶一个。按楼主方法,一次性通过。
多谢。
善知识!菩提自性,本来清净,但用此心,直了成佛。 飞信机器人
factzero
帖子: 2
注册时间: 2007-05-30 18:45

[问题]本人用版主的方法,但出现问题

#30

帖子 factzero » 2008-03-02 14:56

今天我用版主的方法在装skyeye,但出现问题了。
问题:(四、测试这个程序)
我安上面的方法依次执行,当在shell中运行代码:skyeye -e linux时,在shell中出现下面代码

arch: arm
cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0
mach info: name at91, mach_init addr 0x805a2e0
ethmod num=1, mac addr=0:4:3:2:1:f, hostip=10.0.0.1
can't find device module: (null)
log_info: log is off.
log_info:log file is /tmp/test.log, fd is 0x80b12a0
log_info: log start clock 3200000
log_info: log end clock 3330000
SKYEYE: use arm7100 mmu ops
Loaded ROM ./boot.rom
exec file "linux"'s format is elf32-little.
start addr is set to 0x00000004 by exec file.[/color]

此时已经死在那里,并没有出现版主提到的那个图形:
____ _ _
/ __| ||_|
_ _| | | | _ ____ _ _ _ _
| | | | | | || | _ \| | | |\ \/ /
| |_| | |__| || | | | | |_| |/ \
| ___\____|_||_|_| |_|\____|\_/\_/
| |
|_|

请高手指教,
回复