|
发表于 2009-8-31 14:20:50
|
显示全部楼层
二进制的文件,应该都可以运行的。
有的不能运行的原因在于:
1, 设备驱动。因为windows 和linux对同一个设备的驱动程序可能不同,所以exe这样的文件和驱动配合可能会有问题。
因为设备驱动多数是动态链接库,当exe运行的时候动态加载,其效果相当于改变了原来的exe文件,由此而引发win和linux将运行不同的exe文件,从而导致错误。
如果win下,也有类似linux下 .a 一样的可执行文件,那么这个原因应该可以避免。
2,内存。 win和linux对内存的分配不同。在那里是合法的pointer,在这里可能就是非法。
这是我的第一感觉,说的不对的地方,请多指正。
接着,我做了个实验。在linux上写了hello.c的简单程序(printf("hello\n");)。
动态载入:gcc hello.c 后,拷贝到win下运行,运行,但没有显示hello.猜测是输出到别的地方了。
位置独立的代码:gcc -fPIC hello.c 后,拷贝到win下运行,提示错误“not recognized as ...”,不可识别。 |
|