#macos #gcc #makefile #openmp #linker-errors
#macos #gcc #makefile #openmp #компоновщик — ошибки
Вопрос:
Я использую macOS Mojave версии 10.14.16 и пытаюсь установить http://www.rpl2.net/index.php (язык программирования, использующий обратную польскую нотацию, как в некоторых калькуляторах HP, таких как 48GX), должен работать на MacOSX (они говорят «macOS X (Xcode 3.1.4 gfortran 4.5)»).
Итак, я загрузил последнюю стабильную версию, компакт-диск в папку и хотел запустить
./configure
make
make install
Но ./configure не удается выполнить из-за «configure: ошибка: не удается найти libgomp!». Нет пакета libgomp, который я мог бы установить с помощью brew (я уже установил gcc, который поставляется с gfortran, и думал, что он предоставит libgomp, но, видимо, нет).
Может ли кто-нибудь помочь бедному прикладному математику, пытающемуся установить программное обеспечение на свой macbook?
Спасибо
Редактировать
в моем config.log у меня есть это, может быть, это поможет:
configure:7433: checking for vim
configure:7449: found /usr/bin/vim
configure:7461: result: yes
configure:7507: checking for main in -lm
configure:7526: gcc -o conftest -g -O2 -O2 -fno-strict-overflow conftest.c -lm >amp;5
configure:7526: $? = 0
configure:7535: result: yes
configure:7548: checking for pthread_mutex_init in -lc
configure:7573: gcc -o conftest -g -O2 -O2 -fno-strict-overflow conftest.c -lc -lm >amp;5
configure:7573: $? = 0
configure:7582: result: yes
configure:7687: checking for omp_get_num_procs in -lgomp
configure:7712: gcc -o conftest -g -O2 -O2 -fno-strict-overflow conftest.c -lgomp -lc -lm >amp;5
ld: library not found for -lgomp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
configure:7712: $? = 1
Комментарии:
1. Libgomp обычно поставляется с gcc. Возможно, вам просто нужно настроить динамические пути компоновщика? Однако я не знаю, как это делается на Mac.
2. Настройка обычно создает файл журнала с дополнительной информацией. Что именно там написано?
3. Извините, я понятия не имею. Я даже не понимаю, почему настройка хочет явно связать с библиотекой без использования
-fopenmp
… Я, по крайней мере, изменил теги, чтобы они могли привлечь нужных экспертов.
Ответ №1:
Вы не говорите, как вы установили GCC
. Если вы сделали это с помощью homebrew, и
brew install gcc
вы должны быть в состоянии видеть:
/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/libgomp.dylib
что означало бы, что вам нужно скомпилировать с:
gcc ... -L /usr/local/Cellar/gcc/10.2.0/lib/gcc/10 -l gomp ...
В противном случае вы всегда можете выполнить поиск libgomp
с помощью:
find /usr -name "lib*gomp*lib"
Вы можете проверить, какие gcc
из них вы используете с:
type gcc
Комментарии:
1. Я установил его с помощью brew. Он действительно находится по указанному вами пути. Однако, когда я делаю gcc —version, я получаю «Сконфигурировано с помощью: —prefix=/Library/Developer/CommandLineTools/usr —with-gxx-include-dir=/Library/Developer/ CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/ c / 4.2.1 Версия LLVM для Apple10.0.1 (clang-1001.0.46.4) Цель: x86_64-apple-darwin18.7.0 Модель потока: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin» . Так что, вероятно, не та версия!
2. Если вы используете homebrew , он устанавливает двоичные файлы (то есть программы),
/usr/local/bin
поэтому вам нужно поместить это в начало вашего пути, тогда вы найдете homebrew GCC, а не обрезанный Apple.3. Ну, я попробовал несколько вещей, но ничего не получилось. В моем пути переменная /usr/local/bin предшествует /usr/bin . Я добавил псевдонимы в свой псевдоним bash_profile gcc=’gcc-10′; и в новой оболочке gcc —version выдает желаемый результат «gcc-10 (Homebrew GCC 10.2.0) 10.2.0». Однако ./configure по-прежнему не удается: при добавлении gcc в начало файла отображается /usr/bin/gcc . Итак, я не знаю, как заставить скрипт выбрать «правильный» gcc
4. Лично я бы никогда не стал использовать псевдоним
gcc
, я предпочитаю, чтобы мой PATH говорил. В любом случае, я не знаком с этим пакетом. Я бы посоветовал вам попробовать запустить./configure --help
or./configure -h
и посмотреть, подскажет ли он вам, как указать предпочитаемый вами компилятор.5. Я последовал apple.stackexchange.com/questions/245891 /… и единственное, что сработало, это выполнить ln -sf /usr/local/bin/gcc-10 /usr/local/bin/gcc перед выполнением ./configure