我正在尝试使用 MacPorts 在 OS X 上安装 cgminer。从一开始就麻烦不断,但有了适当的工具、常识和互联网,我已经走到了这一步。本质上,sudo make install上的编译堵塞表明 util.c 的第 956 行出现堵塞 - 这是终端输出的文本:
CC cgminer-cgminer.o
CC cgminer-util.o
util.c: In function ‘nanosleep_abstime’:
util.c:956: error: label at end of compound statement
make[1]: *** [cgminer-util.o] Error 1
make: *** [install-recursive] Error 1
以下是在 Xcode 4.6.3 中打开的 util.c 的 cgminer 副本的内容,在 nano sleep_abstime 进行裁剪,并在第 956 行插入了注释:
static void nanosleep_abstime(struct timespec *ts_end)
{
uint64_t now_ns, end_ns, diff_ns;
struct timespec ts_diff;
struct timeval now;
end_ns = timespec_to_ns(ts_end);
gettimeofday(&now, NULL);
now_ns = timeval_to_ns(&now);
if (unlikely(now_ns >= end_ns))
goto out;
diff_ns = end_ns - now_ns;
ns_to_timespec(&ts_diff, diff_ns);
nanosleep(&ts_diff, NULL);
out:
#ifdef WIN32
timeEndPeriod(1);
#endif
} // LINE 956
#endif
现在,我对 Unix/Linux 命令或终端在任何方面、形状或形式上都不熟悉——我觉得自己像一条离开水的鱼,所以我所学到的一切我都必须通过做错来学习然后艰难地学习。但是,我在网上读到,这个错误是通过结束一个在函数的最后部分未解决的标签来解决的——也就是说,如果函数在默认情况下结束:,a break; 被放置在它和端大括号之间以解决错误。
但是,我尝试将 break 放在 WIN32 #endif 之后、#ifdef 预处理器参数内,并在它之前,直接在 out: 之后。所有继续使编译器失败。有什么解决方案吗?我觉得解决方案正盯着我看。
这是我的设置的相关配置/版本信息:
OS X 10.8.4 (12E55)
Xcode 4.6.3 w/ Command Line Tools installed
MacPorts version 2.2.0