在 c (.a 文件) 中使用静态库

时间:2021-04-27 12:46:45

标签: c shell gcc

我正在尝试使用 shell 脚本创建一个静态库。

为了创建库,我使用了以下脚本:

gcc -c -Wall -Wextra -Werror *.c
ar -cr libft.a *.o

5 个 .c 文件中有 5 个不同的函数。

现在我想测试这个库并用这个内容创建了一个 main.c 文件:

#include "libft.a"

int     main(void)
{
    ft_putstr("hello");
}

编译 main.c(使用 gcc main.c)返回 419 警告和至少 20 个错误,看起来像这样:

./libft.a:4:492: warning: null character ignored [-Wnull-character]
  ...<U+0000>UH<89><E5>H<83><EC><U+0010>@<88>}<FF><BF><U+0001><U+0000><U+0000><U+0000>H<8D>u...

在此之前,我使用 .h 文件工作正常,但这次我不应该创建 .h 文件,所以我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

#include "file_name" 表示“请将文件 file_name 的内容复制并粘贴到此处”,因此不应与 .a 文件一起使用。

您可以编写直接使用的函数声明,而不是使用 .h 文件。

/* guessed from usage, please use correct argument and return type */
void ft_putstr(const char*);

int     main(void)
{
    ft_putstr("hello");
}

然后编译与库链接的源代码:

gcc main.c -lft