|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
uClinux中无法实现fork()只能用vfork()。父进程在调用vfork()后必须在子进程调用exec()或者exit()前阻塞; uClinux为可执行程序在紧随它的数据段结束处分配堆栈空间。如果堆增长太大,可能覆盖程序的静态数据段和代码段;因此,有时我们自己(计算)需要合寻找一个适的栈大小:设置的栈空间过大则浪费内存;过小则会导致内存溢出。 uClinux中没有自动扩展的栈,也没有brk()调用。用户必须使用mmap()分配内存空间,也可在程序编译过程中,通过LDFLAGS += -Wl,-elf2flt='131072' 参数来指定使用栈的大小,也可以使用下面命令来调整生产的可执行文件中栈的大小: #arm-elf-flthdr -s 131072 busybox arm-elf-flthdr命令详解:arm-elf-flthdr --helparm-elf-flthdr: invalid option -- -invalid optionusage: arm-elf-flthdr [options] flat-file Allows you to change an existing flat file -p : print current settings -z : compressed flat file -d : compressed data-only flat file -Z : un-compressed flat file -r : ram load -R : do not RAM load -k : kernel traced load (for debug) -K : normal non-kernel traced load -s size : stack size -o file : output-file (default is to modify input file) |
|