是否可以在gcc中编译具有msb endianness的二进制文件?如果是这样,它们在执行时是否能正常工作?
最佳答案
把评论转换成类似于答案的东西。
在某种程度上,它取决于CPU体系结构。在SPARC或电源上,您可能会发现MSB是默认的。在英特尔,默认情况下肯定是LSB,你可能不能。
关于英特尔。如果我以某种方式将elf头的每个条目都更改为一个小的尾数二进制文件中的msb,那么这是否会正确执行?
不,你必须对代码做很多其他的修改,才能给它一点点工作的机会。基本上,每一个数字都必须从小端到大端进行修改。
是否包括指令地址、即时参数等?我想不管精灵旗是什么,它们都应该是小恩迪安的。
只要稍加思考,我认为英特尔内核很有可能拒绝执行msb elf可执行文件。它被编译为期望lsb,并且知道它不知道如何处理替代方案。要解决这个问题,您必须重建内核和动态加载程序,ld.so.1
。这可能只是你问题的开始。
总的来说,我认为这是徒劳的。在没有相反信息的情况下,我认为您不必担心处理英特尔二进制文件的MSB ELF标头的标题,它们将不存在于实践中。
关于linux - 在Linux中可能使用MSB标志编译ELF文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32324549/