LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3328|回复: 50

编译gcc指定target为i686,在用其编译的代码能运行在i386上吗?

[复制链接]
发表于 2006-4-2 01:09:38 | 显示全部楼层 |阅读模式
已经困惑好几天了!
自己编译gcc时设定 configure --target=i686-pc-linux-gnu
如果用这个gcc编译的代码(不设定 -march -mtune)能运行在i386上吗?
发表于 2006-4-2 01:16:44 | 显示全部楼层
gcc -v 编译一个文件,看看默认的优化参数是什么。。我这里是 pentiumpro,,呵呵。。郁闷。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-2 02:29:46 | 显示全部楼层
假如没有其他的优化参数.
回复 支持 反对

使用道具 举报

发表于 2006-4-2 08:39:42 | 显示全部楼层
看起来,默认是 -march=i386
回复 支持 反对

使用道具 举报

发表于 2006-4-2 08:57:25 | 显示全部楼层
哇,什麽年代了,还用 -march=i386?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-2 09:24:12 | 显示全部楼层
Post by 终极幻想
看起来,默认是 -march=i386

那就是说configure --target=i686-pc-linux-gnu中的i686没有
传递给-march?传递给了-mtune?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-2 09:44:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2006-4-2 17:44:05 | 显示全部楼层
有点明白了,谢谢楼上的资料。。。

--target=i686-pc-linux-gnu 等同于 --target=i386-pc-linux-gnu --with-cpu=i686,默认调用 -mtune=i686。

和我一开始说的 "我这里是 pentiumpro" 吻合,我的就是 i686-pc-linux-gnu。

我感觉: -mtune 和 -march 的区别是不是后者 编译出来的程序只能运行在该平台或者更高的平台,但是 mtune 就可以运行在所有分支体系如i386,i486,i686 等?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-2 19:02:28 | 显示全部楼层
Post by 终极幻想
有点明白了,谢谢楼上的资料。。。

--target=i686-pc-linux-gnu 等同于 --target=i386-pc-linux-gnu --with-cpu=i686,默认调用 -mtune=i686。

和我一开始说的 "我这里是 pentiumpro" 吻合,我的就是 i686-pc-linux-gnu。

我感觉: -mtune 和 -march 的区别是不是后者 编译出来的程序只能运行在该平台或者更高的平台,但是 mtune 就可以运行在所有分支体系如i386,i486,i686 等?

对于x86平台是这样的,gcc手册上有具体介绍.
http://gcc.gnu.org/onlinedocs/gc ... -x86_002d64-Options
我下了gcc-4.1的源码,找了半天也没找到--target=... 是怎么传递给mtune(或其相对应的变量).不过,至少知道--target=...决定了gcc的安装目录.比如debian都在
/usr/lib/gcc/i486-linux-gnu/.下面的文章也是说这个;
http://gcc.gnu.org/ml/gcc/2002-07/msg00411.html
回复 支持 反对

使用道具 举报

发表于 2006-4-2 19:48:42 | 显示全部楼层
噢,我就是对 x86 说的,,你提及的连接中,也说了,不同体系不同的做法,我不知道其他体系具体的细节,因为我没研究过。

debian 的是标准的,LFS 也一样。
# ll /usr/lib/gcc
total 0
drwxr-xr-x 5 root root 120 2006-03-13 12:50 i686-pc-linux-gnu/

我不知道如何试验 -march=i386 和 -march=k8 的区别。有什么软件么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表