Создать переносной и статический бинарный файл Фортран Linux? - PullRequest
0 голосов
/ 28 августа 2018

Я изучаю варианты создания переносимых статических двоичных файлов Linux из кода на Фортране (в том смысле, что двоичные файлы должны быть в состоянии работать как на любых новых, так и на старых версиях Linux). Если я правильно понимаю (экстраполируя из C), основная проблема для переносимости заключается в том, что glibc является прямой, но не обратно совместимой (то есть статические двоичные файлы, созданные на старых дистрибутивах, будут работать на более новых, но не наоборот). По крайней мере, это работает в моих до сих пор ограниченных тестах (с одной оговоркой, что использование Scratch-файлов в некоторых случаях вызывает segfaults, работающие на более новых дистрибутивах).

По крайней мере, в C можно избежать компиляции на старых дистрибутивах, добавив устаревшие заголовки glibc, как описано в

https://github.com/wheybags/glibc_version_header

Этот конкретный метод не работает с кодом и компиляторами на Фортране, но я хотел бы знать, знает ли кто-нибудь о подобном подходе (или, более конкретно, что может потребоваться для создания переносимых двоичных файлов на Фортране, достаточно ли старого glibc или он необходим) также использовать старый libfortran и т. д.)?

1 Ответ

0 голосов
/ 29 августа 2018

Я предлагаю использовать образ докера manylinux в качестве отправной точки.

Вкратце: manylinux - это «определение платформы» для распространения двоичных колес (пакетов Python, которые могут содержать скомпилированный код), которые работают в большинстве современных систем Linux. Потребность в manylinux и его определение можно найти как Предложение по улучшению Python 513

Их изображения основаны на CentOS 5 и включают в себя все основные инструменты разработки, включая gfortran. Процесс для вас будет (я не тестировал, и он может потребовать незначительных корректировок):

  1. Запустите образ докера из https://github.com/pypa/manylinux
  2. Скомпилируйте ваш код с флагом -static-libgfortran

Возможен твик в ситуации, когда они не поставляют статическую версию libgfortran, и в этом случае вы можете добавить ее здесь .

Полученный код должен работать в большинстве используемых в настоящее время систем Linux.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...