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