![在英特尔平台上编译 rsync 时,Solaris cc 出现段错误](https://linux22.com/image/515908/%E5%9C%A8%E8%8B%B1%E7%89%B9%E5%B0%94%E5%B9%B3%E5%8F%B0%E4%B8%8A%E7%BC%96%E8%AF%91%20rsync%20%E6%97%B6%EF%BC%8CSolaris%20cc%20%E5%87%BA%E7%8E%B0%E6%AE%B5%E9%94%99%E8%AF%AF.png)
我正在尝试在 Intel 芯片组上的 Solaris 5.10 上编译 rsync-3.0.7。
运行时./configure
我看到以下内容(显然是错误的行):
checking size of int... 0
checking size of long... 0
checking size of long long... 0
checking size of short... 0
checking size of int16_t... 0
checking size of uint16_t... 0
我config.log
看到以下几行:
configure.sh:5448: /tool/sunstudio12.1/bin/cc -xc99=all -o conftest -g -DHAVE_CONFIG_H conftest.c >&5
"conftest.c", line 123: warning: statement not reached
cc: Fatal error in cc : Segmentation Fault
configure.sh:5448: $? = 1
configure.sh: program exited with status 1
分段错误?什么原因导致一个简单的测试脚本在编译过程中出现分段错误?
答案1
这不会解决你的编译问题,但你可以随时考虑使用 opencsw repohttp://opencsw.org/他们已经编译了这个版本的 rsync,并且有一个叫做 pkg-get 的实用应用程序来执行安装
答案2
我遇到了同样的问题,但无法使用-xc99=all,no_lib
解决方法(我构建的程序需要所有 c99 功能),并尝试在 truss 下手动运行 cc 命令。它显示在尝试打开后立即发生段错误/lib/values-xpg6.o
。此文件不存在,但可在SUNWarc
包中找到。我安装了它,段错误就消失了。
我不完全确定根本原因是什么,但这应该可以帮助上述解决方法失败的人。
答案3
该选项-xc99=all
导致段错误。可以找到该选项的描述这里它表明默认值为-xc99=all,no_lib
(不会导致编译器段错误)。
为了使configure
脚本正常工作,我configure.sh
对其进行了编辑,并将实例替换-xc99=all
为-xc99=all,no_lib
回答了我自己的问题,以便其他遇到此问题的人可以尝试建立解决方法。