【问题标题】:Swiss ephemeris library wont run at Ubuntu瑞士星历库不会在 Ubuntu 上运行
【发布时间】:2013-12-29 09:42:55
【问题描述】:

我正在尝试在装有 Ubuntu 的主机上编译 Swiss Ephemeris (ftp://ftp.astro.com/pub/swisseph/swe_unix_src_1.80.00.tar.gz)(uname -a 给出“Linux 主机名 3.8.0-27-generic #40-Ubuntu SMP Tue Jul 9 00:17:05 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux")。编译后(带有一些微不足道的警告)会产生最甜蜜的测试实用程序,它会在尝试计算“True Node”值时停止执行“Segmentation fault”disgnistics。所以输出看起来像:

根# ./sweetest 日期 ?11.11.2012 日期 (dmy) 11.11.2012 格雷格。 0:00:00 ET 版本 1.80.00 东部时间:2456242.50000000000 厄普西隆(真)23°26'10.3185 章动 0° 0'12.8789 -0° 0' 5.0637 太阳 228°59'59.3595 -0° 0' 0.4087 0.990046642 1° 0'20.7731 月亮 188°31'57.8543 -3°54'46.3397 0.002459541 14°21'16.6092 水星 243° 1'34.8373 -1°40'51.1438 0.725810675 -0°38'50.8096 金星 196°23'20.1064 1°45'36.9548 1.314241757 1°13'33.8787 火星 265°24'20.0798 -1° 5'27.6126 2.088236770 0°44'55.7696 木星 74° 7'54.6997 -0°49'34.6905 4.133908104 -0° 6'44.8820 土星 214°20'13.6282 2°14'13.1210 10.732657811 0° 7' 6.4939 天王星 5° 2'49.4996 -0°44'16.5288 19.336198119 -0° 1'31.9324 海王星 330°21'30.7716 -0°37' 3.2729 29.781739405 -0° 0' 0.6865 冥王星 277°40'41.7136 3°26'39.7902 32.974892720 0° 1'32.2583 平均节点 236°17'52.2579 0° 0' 0.0000 0.002569555 -0° 3'10.7224 分段故障

我的卑微调查将我指向“swe_calc”调用,这是计算行星体的主要方法 坐标计算。它记录在这里:http://www.astro.com/swisseph/swephprg.htm#_Toc365635945

如果有任何解决此问题的建议或想法,我将不胜感激。

提前致谢。

P.S.Swiss Ephemeris 是一个用于天文和占星术计算的开源 C 库 天体坐标、速度等。

【问题讨论】:

  • 带有一些无关紧要的警告”?
  • 顺便说一句:我从不root 身份测试外国资源!
  • 好的,谢谢!实际上不是root)

标签: c linux ubuntu segmentation-fault


【解决方案1】:

对 Debian 稳定版 Linux 的快速检查发现 Makefile 未命中 #define _GNU_SOURCE,这导致了一些“隐式声明”和“赋值使指针来自没有强制转换的整数”,如果在 64 位上,至少对于 strdup() 调用来说不是“好”。

要解决此问题,请按如下方式修改 Makefile

改变这一行

CFLAGS = -g -O9 -Wall -fPIC # for Linux and other gcc systems

变成这一行:

CFLAGS = -D_GNU_SOURCE -g -O9 -Wall -fPIC -Wextra -pedantic -std=c99    # for Linux and other gcc systems

【讨论】:

  • alk,谢谢你的建议!我遵循了这一点,但故事以同样的 Segfault 崩溃告终。补充一点:我之前对“FreeBSD 8.x”和“CentOS 5.7 x86_64”的体验非常顺利。
  • @DavidPilgrim:用 gdb 运行它会产生回溯并显示它崩溃的地方。您在 OP 中提到的那些警告也可能很有趣。
猜你喜欢
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
  • 2013-01-10
  • 2012-08-16
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
相关资源
最近更新 更多