簡體   English   中英

Linux:.c和Makefile“如何創建.s和.o文件,以便可以在終端中使用” make”?”

[英]Linux: .c and Makefile “How to create the .s and .o file so that I can use ”make“ in terminal?”

好的,我假設這是一個簡單的問題。 我有一個.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 

任何幫助表示贊賞。

您確定您有一個makefile? 您顯示的輸出似乎與該假設不符。

make firstlab.c firstlab 您可以將其替換為make firstlab ,結果將相同。 如果要使用對象文件類型,請make firstlab.o

所有這些行為都取決於make的隱式規則。 您可能應該為項目編寫一個makefile,以更好地控制行為。 為了支持創建程序集文件( firstlab.s ),您仍然必須這樣做。 規則如下:

%.s : %.c
   $(CC) $(CFLAGS) -S -o $@ $<

應該做。 您可以為可執行文件和目標文件制定相似的規則。 我強烈建議您快速瀏覽一下《 GNU Make手冊》以開始使用。

要修復printfscanf警告,請在程序頂部添加#include <stdio.h>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM