Как собрать двоичные файлы и использовать их на нескольких машинах в Unix? - PullRequest
3 голосов
/ 14 ноября 2011

У меня есть исходный код компилятора, который я создаю следующим образом:

/path/to/srcdir/configure --prefix=/path/to/installdir
make
make install

Я хочу распространить полученный 'installdir' на другие машины с намерением, чтобы любой мог использовать двоичные файлы компилятора безпроходит 3-х этапный процесс сборки (я просто включаю installdir в свой дистрибутивный архив).

Для тестирования я копирую installdir на другой компьютер под другим пользователем, а затем просто пытаюсь скомпилироватьтестовая программа с использованием только что скопированных двоичных файлов, например:

installdir/bin/ucc -mp -o test load_bl.c

Затем я получаю сообщение об ошибке:

cc1: error: /home/sghosh/normalbuild/installdir/open64-gcc-4.2.0/include: Permission denied
cc1: error: /home/sghosh/normalbuild/installdir/open64-gcc-4.2.0/lib/gcc/x86_64-redhat-linux/4.2.0/include: Permission denied
cc1: error: /home/sghosh/normalbuild/installdir/open64-gcc-4.2.0/x86_64-redhat-linux/include: Permission denied

/home/sghosh/normalbuild/install - это то, что указано как --prefix во время configure на моей сборочной машине.Для двоичного файла installdir/bin/ucc требуются некоторые файлы в каталоге open64-gcc-4.2.0 в каталоге installdir, но поскольку этот путь указан в --prefix, он все еще ищет его, и я хочу, чтобы он просматривал тот же каталог в текущем каталоге.машина.К вашему сведению, у меня нет привилегий sudo / root.

Как мне получить бинарный дистрибутив, который будет работать на любой машине (собрать один раз, использовать где угодно, сортирует), и в этом случае не смотреть на начальный путь --prefix?

У меня был похожий вопрос в суперпользователе, но так как произошло много изменений, и я не получил ответа на новый вопрос, поэтому я пишу его здесь.

1 Ответ

0 голосов
/ 27 мая 2013

Проверьте этот инструмент: https://github.com/pgbovine/CDE

CDE - это инструмент, который автоматически упаковывает код, данные и среду, участвующие в запуске любого набора команд Linux, чтобы они могли одинаково выполняться на другом компьютере без каких-либоустановка или настройка.

...