mips-linux-gnu-gcc能够进行小端(little-endian)编译

Maybol2014 2010-12-15 08:19:40
求教:mips-linux-gnu-gcc能够进行小端(little-endian)编译,如果可以的话怎样进行设置?
在线等待!!!
...全文
1577 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
小何 2011-09-15
  • 打赏
  • 举报
回复
大小端有什么具体的不一样吗? 可以详细的分析一下吗?
MKNDG 2011-06-06
  • 打赏
  • 举报
回复
-EL
Maybol2014 2010-12-17
  • 打赏
  • 举报
回复
这个问题已经解决了,其实大小端是针对于CPU架构来说的,CPU只负责程序运行,只有架构才管怎样取指令以及如何存储,从更广义的角度说,硬件不管什么大小端的,只有软件(一般指驱动或底层系统软件)才会决定如何去取指令、如何去存储。一般的,ARM架构、MIPS架构可以同时支持大小端,默认情况下是小端,但也有大端架构的CPU,典型的比如PowerPC,由于程序最终还得在特定架构的处理器下面运行,所以应用程序编译过程中也要相应地编译成大小端方式,只有两者想匹配才能够保证cpu运行时不会出现取指令、取数据错误。
编译工具就是具体实现应用程序编译,也即程序编译成什么方式由编译工具决定。交叉编译工具也如此,比如像arm-linux-gcc、Mips-linux-gnu-gcc、Mips-linux-gcc等交叉编译工具都有编译大小端的功能,这些功能可以通过配置编译工具的编译选项来进行,例如本问题的解决中,mips-linux-gnu-gcc默认的编译方式是大端,可以在其后加上-EL来实现编译工具的小端编译。
以上都是我实际操作中,自己的一些心得,如果有不对的地方请大家多包涵!
无知者无谓 2010-12-16
  • 打赏
  • 举报
回复
大小端是要看CPU支持的(内核也得配合),不是你编译成小/大端就可以用
yashuwa0622cvte 2010-12-16
  • 打赏
  • 举报
回复
是不是-E选项
yangzhifu 2010-12-16
  • 打赏
  • 举报
回复
linux都是小端吧,网络才是大端,可以用下面的程序进行测试:
  1 #include <stdio.h>
2 union w{
3 int a ;
4 char b ;
5 }test;
6 int main()
7 {
8 test.a =1 ;
9
10 if (test.b)
11 printf("Lit endian\n");
12 else
13 printf("Big endian\n");
14 }

justkk 2010-12-15
  • 打赏
  • 举报
回复
不知道,不过linux通常都是小端的吧

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧