libgomp и MacOSX

#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