创建一个静态库并链接它

问题描述 投票:0回答:1

你好漂亮的人,

我正在尝试创建一个静态库并对其进行编译。我已经为它创建了一个小的静态库和标题。

标题(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

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

c gcc static
1个回答
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 

它应该工作。

© www.soinside.com 2019 - 2024. All rights reserved.