描述: 我有一个库 libshell.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
生成文件:
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
目标,但仅此而已。
编辑说明:
把头文件放在编译行上真的很奇怪;我以为您实际上并不想这样做。
您应该查看 gcc 的
-MMD
标志来自动生成依赖项。
关于c - Makefile:链接 .*a 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16972418/