簡體   English   中英

Makefile:鏈接。*一個庫

[英]Makefile: Linking .*a library

描述:我有一個庫libshel​​l.a,里面是我試圖使用的函數ord_interna,但是看起來我把它錯了,你們可以解決我的錯誤,所以我將來不會這樣做嗎? 干杯,

錯誤:

/tmp/ccn5lbmJ.o: In function `main':
minishell.c:(.text+0x4e): undefined reference to `ord_interna'
collect2: error: ld returned 1 exit status
make: *** [minishell.o] Error 1

Makefile文件:

CC=gcc 
CFLAGS=-Wall -pedantic -c

all: microshell

microshell: minishell.o
    gcc minishell.o -o microshell

minishell.o: minishell.c
    gcc minishell.c minishell.h entrada_minishell.c entrada_minishell.h ejecutar.c ejecutar.h libshell.a

clean:
    rm -rf *o microshell

從你的makefile,我猜你有這些源文件:

minishell.c
entrada_minishell.c
ejecutar.c

而且要編譯它們,然后將它們全部用連接在一起libshell.a創建一個名為可執行microshell 在這種情況下,你需要這樣的東西:

CC=gcc
CFLAGS=-Wall -pedantic

all: microshell

microshell: minishell.o entrada_minishell.o ejecutar.o
    $(CC) -o $@ $^ -L. -lshell

如果你願意,你可以添加一個clean目標,但這樣才能讓你前進。

編者注:

  1. 將頭文件放在編譯行上真的很奇怪; 我以為你實際上並不想這樣做。

  2. 您應該查看gcc的-MMD標志來進行自動依賴關系生成。

暫無
暫無

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

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