bucketxp 发表于 2004-9-19 11:38:37

在SkyEye中调用fork的问题

在skyeye模拟的lubbock开发板上运行一个forktest的程序发现一个问题:
forktest.c内容如下:

#include <stdio.h>

int main(void)
{
        int pid;

        pid = fork();
        if (pid == 0)
                printf("\t");
        else
                printf("\t");
        printf("pid = %d\n", pid);

        return 0;
}
然后用xscale-gcc-3.3.3的arm-linux-gcc编译,在skyeye下运行结果如下:
        pid = 126
而在PC机上gcc编译,运行的结果如下:
        pid = 0
        pid = 2969
在skyeye中似乎子进程没有被执行?这个是什么问题?
在skyeye上运行busybox时发现同样的问题,导致启动时shell无法加载。

bucketxp 发表于 2004-9-20 20:39:21

已找到问题原因,是xscale-gcc-3.3.3交叉编译工具链的问题,更换一个版本即可。
现已成功在skyeye模拟的lubbock上运行linux2.6.7+busybox-1.00rc3+tinylogin-1.4。

halfyear 发表于 2004-9-20 21:33:01

厉害啊,不知道你换成哪个版本了

bucketxp 发表于 2004-9-21 13:32:50

arm-linux-gcc -v
Reading specs from:
/usr/local/arm/lib/gcc-lib/arm-linux/3.2.3/specs
Configured with:
./configure
--prefix=/usr/local/arm
--target=arm-linux
--enable-shared
--enable-threads=posix
--with-system-zlib
--disable-checking
--enable-__cxa_atexit --enable-languages=c,c++
Thread model:
posix
Gcc version:3.2.3

prox2004 发表于 2004-9-21 21:32:57

bucketxp的问题比较怪.
好象chenyu版主用xscale-gcc-3.3.3跑的linux2.6.7没有问题.
见http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=76267
forktest的fork出来的子进程没有被调度

不知道内核是否正常?
不知道跟编译器的过分优化有没有关系?可以去掉-O测一下.

挺有趣的问题,可惜手头没有3.3.3和linux2.6.7

chyyuu 发表于 2004-9-23 23:10:14

有意思。

bucketxp 发表于 2004-9-24 23:13:32

会不会是因为编译SkyEye使用的gcc是3.2.3的,而xscale-gcc-3.3.3版本是3.3.3的,所以两者有一些冲突导致fork()调用有问题呢?瞎猜的:P

chyyuu 发表于 2004-9-26 09:59:20

这两者没有任何关系。
页: [1]
查看完整版本: 在SkyEye中调用fork的问题