为什么我不能将我的C代码链接到Ubuntu上的库?

时间:2019-08-12 20:11:04

标签: c

gcc -Wall -Werror -Wextra -Llibft -lft -Ilibft/include main.c

当我使用上面的命令时,链接器会引发以下错误消息:

/tmp/ccwCUgov.o: In function `main':
main.c:(.text+0xc): undefined reference to `ft_putendl'
collect2: error: ld returned 1 exit status

我不得不提到libft.a目录中确实存在正在使用的库libft/

我目前正在使用Ubuntu 18.04LTS进行编码(2019年),但是我从未在macOS上遇到过此类问题。

main.c中的代码:

#include "libft.h"

int main()
{
    ft_putendl("Hello world!");
    return (0);
}

1 个答案:

答案 0 :(得分:0)

-lft放在链接命令的最后,如下所示:

gcc -Wall -Werror -Wextra -Llibft -Ilibft/include main.c -lft

这将导致libft最后被链接,这将导致包含所需的功能(链接器仅包含所需的对象,并且在处理libft.a时,这些对象不是'还需要)。

这可能在Mac上有效,因为Mac包含了存档中的所有对象,或者因为它最后链接了库。