【发布时间】:2019-02-15 14:16:36
【问题描述】:
你好美丽的人们,
我正在尝试创建一个静态库并针对它进行编译。 我已经为它创建了一个小的静态库和一个头文件。
标题(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 你能帮帮我吗?
【问题讨论】:
-
参数的顺序很重要。将库搜索路径参数
-L.放在链接器库选项-lmymath之前。