你好漂亮的人,
我正在尝试创建一个静态库并对其进行编译。我已经为它创建了一个小的静态库和标题。
标题(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中你能帮助我吗?
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
它应该工作。