![](/img/trans.png)
[英]Converting .o file into static library in linux and make it usable in terminal
[英]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手冊》以開始使用。
要修復printf
和scanf
警告,請在程序頂部添加#include <stdio.h>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.