2013-10-01 7 views
-1

поэтому я здесь новый и я эта проблема У меня есть проект, где я должен сделать Makefile также у меня есть 3 файлов, но давайте рассмотрим один, по крайней мере это Makefileожидается ASM, прежде чем строки

333.o: 333.c 
gcc -c 333.c 


clean: rm *.o hell 

это файл, я хочу, чтобы скомпилировать

#!/bin/bash  
echo "enetered number $1 threshold $2" 

Ошибка C: 1: 2 недействителен предобработки директива #! с: 2: ожидается, '=', ' '';', 'ASM' или '_ атрибут' перед строковой константе

что не так? не могу понять,

спасибо

+0

Я думаю, мне нужно заголовочный файл тоже или нет? –

+0

Это домашнее задание или шутка? Если первое, оно должно быть помечено как таковое - и вам нужно уделять больше внимания классу ;-). Если последнее, то, наверное, я просто упал за него, за крючок, линию и грузило. –

ответ

1
  • Вы пытаетесь загнать гвоздь с помощью отвертки - вы используете неправильный инструмент для работы.
  • Вы пытаетесь говорить на mandarin (mono-lingual) frenchman - вы используете не тот язык.

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

Прежде чем идти дальше, я предлагаю вам взглянуть на differences between compiled and interpreted languages

bash это интерпретируемый язык - нет необходимости для компилятора вообще. Просто дайте разрешения на выполнение файла и запустите его. bash будет анализировать и интерпретировать файл по строкам и предпринимать необходимые действия.

c - это скомпилированный язык. Прежде чем источник, который определяет программу c, может запускаться, он должен быть скомпилирован. Компилятор анализирует файлы .c и генерирует двоичные файлы объектов, которые содержат машинные инструкции, которые ваш процессор понимает напрямую.

Для запуска Баш скрипт, я хотел бы сделать следующее:

mv 333.c 333.sh   ; # rename to prevent any confusion 
chmod +x 333.sh   ; # give the bash script executable permissions 
./333.sh 42 69   ; # run the script - give it some args, since your script references $1 and $2 
+0

Спасибо за ваш ответ. Да, у меня есть работа на дому, но все по-другому. Я просто не понимаю, как это работает. У меня есть больше кода, чем это. Я знаю, как это сделать только с помощью скрипта. Я получил много учебников, как делать файл, но я все еще не могу понять четко. –

+0

@YuriyMikhailovich - если вы пишете скрипт, который вам кажется, то вам вообще не нужно 'make'. Makefiles обычно содержат кучу правил, которые сообщают компилятору, как конкретная программа должна быть скомпилирована и связана. С другой стороны, вы не *** компилируете скрипты - они интерпретируются - так что здесь вообще не нужно «make». –

+0

В качестве альтернативы, если вы хотите что-то скомпилировать (и использовать make), тогда вы должны написать свою программу на языке, понятном компилятору, - пример. Компиляторы просто не понимают интерпретируемые языки, такие как скрипт оболочки bash. –

Смежные вопросы