好的,我假设这是一个简单的问题。我有一个 .c 文件和一个 Makefile。如果这很重要,我正在使用 Linux 12.10 ubuntu。我试图了解我如何在终端中编写以获取这两个文件以在这两个文件使用 make 的目录中创建可执行文件、源文件和目标文件。我已经安装了 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
任何帮助表示赞赏。