わかりました、これは簡単な質問だと思います。.c ファイルと Makefile があります。問題があれば、Linux 12.10 ubuntuを使用しています。これら2つのファイルがmakeを利用しているディレクトリに実行可能ファイル、ソース、およびオブジェクトファイルを作成するためにこれら2つのファイルを取得するためにターミナルに書き込む方法を理解しようとしています。nasm をインストールしましたが、他に何かインストールする必要があるかどうかわかりません。これは現在私がやっていることですが、Windowsでできることの背後にある基本を理解していないようですが、Linuxで動作させることはできません。Makefile を Linux 以外に変更しました。
これはおそらく非常に簡単であることはわかっていますが、私はLinuxにかなり慣れていないため、かなり簡単に理解できるはずだと思うことのいくつかを本当に理解していないので、これが簡単に思えたら謝罪します.
$ make firstlab.c firstlab
正しいディレクトリに移動した後、ターミナルに入力しているものです。私のフィードバックは「
make: Nothing to be done for `homework1.c'.
gcc homework1.c -o homework1
homework1.c: In function ‘main’:
homework1.c:20:5: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]
homework1.c:21:5: warning: incompatible implicit declaration of built-in function ‘scanf’ [enabled by default]
"
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char* argv[])
{
int firstNumber = 0;
int secondNumber = 0;
int result = 0;
printf("Enter first value: ");
scanf("%d", &firstNumber);
printf("Enter second value: ");
scanf("%d", &secondNumber);
if(firstNumber >= secondNumber)
result = firstNumber - secondNumber;
else if(secondNumber > firstNumber)
result = secondNumber + firstNumber;
printf("Result: %d\n", result);
system("pause");
return result;
}
ファイルを作成:
##########H
PROJECT = Homework1
##################
CC = gcc
# win 32
#RM = del
#linux
RM = rm -f
BIN = $(PROJECT).exe
OBJ = $(PROJECT).o
all: $(BIN)
clean:
${RM} $(OBJ) $(BIN) $(PROJECT).s
$(BIN): $(OBJ)
$(CC) $(OBJ) -o $(PROJECT).exe
$(OBJ): $(PROJECT).s
$(CC) -c $(PROJECT).s -o $(PROJECT).o
$(PROJECT).s: $(PROJECT).c
$(CC) -c $(PROJECT).c -S -masm=intel
どんな助けでも大歓迎です。