2013-10-01 39 views
-1

所以我新來的,我有這個問題 我有一個項目,我必須做一個makefile 還我有3個文件,但讓我們一個至少 這是生成文件預期ASM串

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


clean: rm *.o hell 

這個文件我想編譯

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

錯誤C:1:2無效的預處理指令#! C:2:預期 '=', ' '',',字符串常量

什麼是錯的前 'ASM' 或 '_ 屬性'?想不通

謝謝

+0

我想我需要的頭文件太多,還是沒有? –

+0

這是一個家庭作業或笑話?如果是前者,它應該被標記爲 - 並且你需要在課堂上多加註意;-)。如果是後者,那麼我想我只是爲了這件事而墮落了。 –

回答

1
  • 您試圖砸向釘子,用螺絲刀 - 你正在使用錯誤的工作工具。
  • 你正試圖說普通話給(單語)法國人 - 你正在使用錯誤的語言。

您試圖編譯的文件的內容表明它是一個shell腳本而不是c文件。但是,當make看到該文件具有.c擴展名時,它將嘗試編譯它,就好像它是一個c文件,其內容顯然不是。

你走得更遠之前,我建議你看看differences between compiled and interpreted languages

bash是一種解釋語言 - 沒有必要爲一個編譯器都沒有。只要給文件執行權限並運行它。 bash將逐行解析和解釋文件並採取必要的措施

c是一種編譯語言。在定義c程序的源代碼可以運行之前,它必須被編譯。編譯器解析.c文件並生成二進制目標文件,其中包含CPU直接理解的機器指令。

要運行的bash shell腳本,我會做到以下幾點:

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),那麼你必須用編譯器能夠理解的語言編寫程序 - c就是一個例子。編譯器根本不理解解釋型語言,比如bash shell腳本。 –

相關問題