1

尝试安装 OpenMPI 时,.configure 文件在检查所选编译器的 ISO C99 能力的部分中失败。

困惑的是 gcc 当然有 std=gnu99 和 std=c99 选项,我修剪了 20,000 行配置文件以隔离违规部分。最后,我将其追溯到 gcc 5 没有编译变量参数函数。

下面的代码生成“后缀或操作数对 `movq' 无效”错误,这是 .configure 文件失败的根本原因。

(我遵循的 OpenMPI 的分步安装在这里https://wiki.helsinki.fi/display/HUGG/Installing+Open+MPI+on+Mac+OS+X

任何人都见过这个并且知道如何解决它?

//-----------------------------------------------------------------------------
// This fails to compile with gcc 5.3
//
// Command: gcc test4.c
//
// Error is: 
//  /var/folders/4s/gkkpz000gn/T//ccAraq59.s:47:suffix or operands invalid for `movq'
//  /var/folders/4s/gkg0r000gn/T//ccAraq59.s:52:suffix or operands invalid for `movq'
//
// gcc version is 5.3.0:
//
// $ gcc --version
// gcc (GCC) 5.3.0
// Copyright (C) 2015 Free Software Foundation, Inc.
// This is free software; see the source for copying conditions.  There is NO
// warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//
//-----------------------------------------------------------------------------


// Check varargs
static void
test_varargs (const char *format, ...)
{
}


//--------------------------------------------------------------
//                         MAIN {}   
//--------------------------------------------------------------

 int
 main ()
 {

    //====================================================
    // Check varargs.
    // test_varargs ("s", "string");            //WORKS
    // test_varargs ("d' ", 65);                //WORKS
    // test_varargs ("s, d' ", "string", 65);   //WORKS

    test_varargs ("f .", 34.234);                       // FAILS!!!
    test_varargs ("s, d' f .", "string", 65, 34.234);   //ALSO FAILS
    //====================================================


   return 0;
 }
4

1 回答 1

3

TLDR:brew 和 XCode gcc 安装之间的冲突。

我最终卸载了所有已安装的 gcc 版本,删除了 g++,删除了所有剩余的悬空链接。接下来我从 XCode 6 升级到 7 并使用了它附带的 gcc 版本。这解决了上述问题。删除所有悬空符号链接和 OpenMPI 的解压缩 tar-ball,然后重新解压缩,可以顺利安装 OpenMPI。cd ./examples, make all, mpirun -np 4 hello_c 工作,我们有一个快乐的 MPI 安装。

于 2015-12-26T19:02:20.513 回答