包含<name.h>和libname.o的库名之间的链接

时间:2016-02-05 21:42:26

标签: c++ c gcc linker shared-libraries

我正在阅读this site,如果我这样做的话:

include<name.h>

然后我的库对象的格式为libname.o。但是,例如,this site表示包含math.h的库名是libm.a.我在这里弄错了什么?

2 个答案:

答案 0 :(得分:2)

命名约定name.hlibname.a就是一个惯例。许多图书馆都遵循它,但不是全部。特别是,许多平台只有一个文件libc.a中的所有C库,无论分类到不同的标头中。其他人在libm.a中有数学库的部分,然后是额外的。

答案 1 :(得分:1)

库可以staticdynamic库,静态库将具有libname.a形式的名称,也称为归档文件,而动态库将具有libname.so,也称为共享对象(so)。

通常,作为一种惯例,人们会遵循name.hlibname.*的关联,以便轻松获得荣誉:)但这仅仅是一种惯例。您可以在打包库时按照自己的命名。

链接时,我们使用-lname指定了库,链接器自动将其扩展为libname.alibname.so