C 为什么我的编译器找不到我的库?

C 为什么我的编译器找不到我的库?,c,gcc,static-libraries,C,Gcc,Static Libraries,我正在尝试使用gcc编译一个简单的C程序: #include <stdio.h> #include <stdlib.h> #include <string.h> #include "lbryTest.h" int main(int argc, char *argv[]) { double x = 0.0; x = lbryTest(2.0, 5.0); printf("%f", x); printf("Placeholder"

我正在尝试使用gcc编译一个简单的C程序:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lbryTest.h"

int main(int argc, char *argv[]) {
    double x = 0.0;
    x = lbryTest(2.0, 5.0);
    printf("%f", x);
    printf("Placeholder");
    return 0;
}
lbryTest是一个函数,它执行一些简单的数学运算并返回一个double。它在lbryTest.h中声明,并在liblbryTest.a中定义

当我使用

gcc图书馆测试.c-l图书馆测试

我得到一个错误:

找不到-llbryTest

我怎样才能解决这个问题


感谢约翰·博林格的评论,它找到了图书馆。我在命令中添加了-L。然而,这并不能解释为什么它一开始就找不到这个库。这些文件都在同一个目录中。如何在不显式添加路径的情况下找到库?或者这在C语言中是非常规的,您应该始终显式地将路径添加到所有链接的库中?

它是否与主程序位于同一位置?在-llbryTest之前向编译命令添加选项-L。不一定。如果您的库不在ld.so的“已知”位置之一,则您需要将其添加到系统并执行ldconfig,或者尝试在gcc命令行中为其提供路径,-L选项采用路径。因此,请提供指向库所在位置的路径。您看到的错误是因为-L-llbryTest中没有-L.Library文件*.a的参数。a不是共享对象。它们是档案库。您需要将它们编译为静态库。我相信-静态应该足够了。