2011/6/20 lubiao <[email protected]>

> >
> > 我用 "gcc-4.4 -Wall -O2 test.c" 编译失败,就使用 gcc-4.3 试试,也是如此。
> >
>
> struct ip_vs_get_services
>
> 有个特别的成员:
>        struct ip_vs_service_entry entrytable[0];
>
> 可能跟优化选项有关系。把 -O2 去掉试试吧。
>

不是这个问题。运行我这个程序的主机原来是32bit,后来安装了64bit内核,
但是gcc默认仍旧生成32bit程序,结果系统调用接口的结构对齐约定就发生了冲突,
加上 -m64 就好了。

我的系统已经安装了32bit运行环境。我不明白的是,为什么32bit应用的
系统调用不会被64bit内核的32bit仿真层做兼容性转换?

回复