Ошибка с gcc 5 для функции varargs: суффикс или операнды недействительны для `movq'
При попытке установить OpenMPI в поле.configure произошел сбой в разделе проверки способности ISO C99 выбранного компилятора.
Озадаченный тем, что gcc, конечно, имеет опции std=gnu99 и std=c99, я сократил файл конфигурации на 20000 строк, чтобы изолировать проблемный раздел. В конце концов я отследил его до 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;
}
1 ответ
TLDR: конфликт между установками brew и XCode gcc.
Я закончил тем, что удалил все установленные версии gcc, удалил g++, удалив все оставшиеся ссылки. Затем я обновил XCode 6 до 7 и использовал версию gcc, поставляемую с ним. Это решило вышеуказанную проблему. Удаление всех висячих символических ссылок и разархивированного tar-шара OpenMPI с последующим повторным разархивированием позволило установить OpenMPI без проблем. cd ./examples, make all, mpirun -np 4 hello_c сработало, и мы получили счастливую установку MPI.