Как связать код C / C ++ с C-shell-скриптом? - PullRequest
2 голосов
/ 05 мая 2010

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

Теперь у меня есть три разных файла - один C shell script и 2 .c file с.

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

Есть ли лучший способ сделать это?

[Я знаю, что могу сделать один файл кода C из этих двух ... но у меня все еще останется сценарий оболочки и код C. На самом деле, два кода на C делают совершенно разные вещи ... поэтому я хочу, чтобы они были отдельными]

Ответы [ 4 ]

3 голосов
/ 05 мая 2010

Похоже, вы беспокоитесь о том, что ваши пользователи недостаточно умны, чтобы понять, как решить такие проблемы, как command not found ошибки и тому подобное. Если абсолютно НЕОБХОДИМО скрыть «сложность» коллекции файлов, ваш скрипт может создать другие файлы. В большинстве других случаев я бы предположил, что этот подход только увеличит вашу рабочую нагрузку поддержки, так как опытные пользователи с меньшей вероятностью узнают, как устранить неполадки в процессе.

Если вы решите полагаться на наличие компилятора в системе, на которой вы работаете, вы можете сохранить код C в виде набора cat $STRING >> file.c команд, чтобы создать два файла C, которые вы затем компилируете и используете .

Если вы хотите использовать вместо этого предварительно скомпилированные программы n, тогда можно использовать тот же базовый процесс, за исключением того, что вместо этого используйте xxd для генерации строк в вашем скрипте и реверсирования процесса преобразования для получения рабочих двоичных файлов. , Примечание: не забудьте chmod двоичный файл, чтобы он был исполняемым.

1 голос
/ 05 мая 2010

используйте команду shar для создания самораспаковывающегося архива.

или, что еще лучше, используйте unzipsfx с опцией AUTORUN.

Это предоставляет пользователям ОДИН файл итолько ОДНА команда для выполнения (в отличие от одной для неперехватывающей и одной для выполнения).

ПРИМЕЧАНИЕ. Для запуска команды unzip должна использоваться опция -n, так что только первый запуск извлечет файлы, а последующий пропустит извлечение.

0 голосов
/ 06 мая 2010

Вы можете включить код c в сценарий оболочки как здесь документ :

#!/bin/bash

cat > code.c << EOF
line #1
line #2
...
EOF

# compile
# execute

Если вы хотите проявить фантазию, вы можете проверить наличие исполняемого файла и пропустить его компиляцию, если он существует.

Если вы занимаетесь программированием оболочек, остальное из Advanced Bash-Scripting Guide также стоит посмотреть.

0 голосов
/ 05 мая 2010

Использовать zip или tar файл?И вы понимаете, что .c файлы не являются исполняемыми, вам нужно сначала скомпилировать и связать их?

...