创建一个静态库并链接到它

时间:2019-02-15 14:16:36

标签: c gcc static

你好漂亮的人,

我正在尝试创建静态库并对其进行编译。 我已经准备好了一个小的静态库和它的头文件。

标题(math.h):

int add (int a, int b);
int sub (int a, int b);

add.c:

int add (int a, int b) { return a + b; }

sub.c:

int sub (int a, int b) { return a - b; }

我已经使用以下命令创建了静态库:

gcc -c add.c

gcc -c sub.c

ar rcs libmymath.a add.o sub.o

现在是我的main.c

#include <stdio.h>
#include "math.h"

int main( int argc, char **argv ) {
    printf("Result : %d\n", add(5,7) );
    return 0;
}

我可以使用以下命令对其进行编译:

gcc main.c libmymath.a -o main

但是,如果我按照以下方式进行编译,它将失败。

gcc main.c -lmymath -L. -o main

它失败并出现以下错误:

/usr/bin/ld: cannot find -lmymath collect2:

error: ld returned 1 exit status

甚至更改为

gcc main.c -llibmymath -L. -o main

失败,即使我在gcc中包含标头mymath.h 你能帮我吗?

1 个答案:

答案 0 :(得分:1)

gcc已经通过libmath.so或libmath.a理解了-lmymath。因此,当您在-llibmymath中添加lib单词时。在这种情况下,gcc知道您的库名称为liblibmymath.a。因此,请替换此命令

gcc main.c -llibmymath -L. -o main

通过

gcc main.c  -o main -L. -lmymath 

应该可以。