C语言 如何用gcc编译一个带有源代码文件的库存档



TL;DR -我需要编译存档。A带测试。生成可执行文件

背景-我正试图从我正在修改的软件包中调用一个单独的库中的函数,但该函数(字符串解析器)正在创建分割违规。错误肯定发生在库中,开发人员要求在发生错误的地方使用测试用例。与其让他试着编译我正在编写的相当大的软件包,我宁愿给他一个简单的程序,调用适当的函数(希望死在同一个地方)。他的库也使用了几个系统库(lapack, cblas等),所以链接需要点击我认为的所有内容。

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

这看起来应该是直截了当的,但这让我很困惑。

.a扩展名表示它是静态库。因此,为了对它进行链接你可以使用链接阶段的开关:

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

通常使用-L来添加库的存储路径(除非它在当前目录中),使用-l<libname>来指定库。库名没有扩展名。如果库名为libarchive。A你还是会给-larchive。如果您想指定库的全名,那么您将使用例如:-l:libname.a

如果libraypath为/usr/lib/libmylibrary.a,则使用

-L/usr/lib -lmylibrary

相关内容

  • 没有找到相关文章

最新更新