上午在做一个Solaris 10 on x86代码移植测试过程中,发现一个Gcc编译问题,这里记录下来以作备忘。
 
我们的代码在一台安装了Solaris 10 for x86平台的机器A上进行64位编译(gcc -m64)时报错,错误信息如下:
"xx.c:1: sorry, unimplemented: 64-bit mode not compiled in"。
 
而奇怪的是在另外一台同为Solaris 10 for x86的机器B(与上面的机器A硬件配置相同)上则顺利编译通过。最初猜测可能是因为系统设置或环境变量设置不同导致的问题,经过对比检查后发现以上设置都一致,最后将问题定位在Gcc编译器版本上了。
 
机器A上使用的是Gcc 3.4.6 for Solaris 10 on x86版本;而可以通过编译的那台机器B上使用的是Gcc 3.4.3 (csl-sol210-3_4-branch+sol_rpath) for Solaris 10 x86版本。尝试在机器A上使用Gcc 3.4.3进行编译,错误未再出现,看来的确是Gcc编译器版本问题。
 
遂到Sunfreeware网站上一查究竟。在Gcc 3.4.6 for Solaris 10 on x86的软件说明中,有这样一段话:
 
“If you need to do 64-bit compiles, you should use the gcc-3.4.3 that comes with Solaris 10 in /usr/sfw/bin.”
 
而Gcc 3.4.6 for Solaris 10 on sparc的版本说明中,则明确表示:“When needed and the source code supports it, this C compiler can create 64-bit executables via the -m64 flag as well as the usual 32-bit ones.”
 
注:以上提到的Solaris软件均来自于Sunfreeware站点。

© 2009, bigwhite. 版权所有.

Related posts:

  1. '符号连接'那些事儿
  2. 分享一个Oracle OCI库的BUG
  3. 使用iconv做内码转换
  4. 走马观花ANSI C标准-类型
  5. 学习虚存-自上而下