0

TL;DR - 我需要用 test.o 编译 archive.a 来制作可执行文件。

背景 - 我正在尝试从我正在修改的软件包中调用单独的库中的函数,但该函数(字符串解析器)正在创建分段违规。库中肯定发生了故障,开发人员已要求提供发生错误的测试用例。与其让他尝试编译我正在处理的相当大的软件包,不如只给他发送一个调用适当函数的简单程序(希望死在同一个地方)。他的库也使用了几个系统库(lapack、cblas 等),因此链接需要满足我的所有想法。

我可以链接到创建他的库时创建的 .o 文件,但当然它们不会链接到适当的系统库。

这似乎应该是直截了当的,但这让我很困惑。

4

1 回答 1

5

.a扩展名表明它是一个静态库。因此,为了链接它,您可以使用链接阶段的开关:

gcc -o myprog -L<path to your library> main.o ... -larchive

通常,您使用 -L 添加存储库的路径(除非它在当前目录中)并-l<libname>用于指定库。libraryname 没有扩展名。如果库被命名为 libarchive.a,你仍然会给出 -larchive。如果你想指定库的全名,那么你会使用 ie-l:libname.a

更新

如果 libraypath 是/usr/lib/libmylibrary.a你会使用

-L/usr/lib -lmylibrary
于 2013-06-10T17:12:55.557 回答