【发布时间】:2013-06-06 21:22:54
【问题描述】:
说明: 我有一个库 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 好奇怪。
-
它在 gcc for minishell.o 的末尾,在这种情况下如何修复它?对不起,我只是不习惯使用makefile,我通常在Win中编码,但是这次我不得不这样做。
-
@PiotrJerzyMamenas 您似乎不理解为什么库和链接是必要的,也不理解它们是如何工作的。我建议你谷歌“C编译过程”然后你就会知道哪里出错了。
-
@PiotrJerzyMamenas 在第二个 gcc 行中,删除标题 (.h) 并尝试使用 -l 作为 'shell' 之前的开关(而不是 libshell.a)。更好的是,从在静态库中正确链接的其他代码中找到另一个 Makefile。
标签: c linux linker makefile dynamic-library