我正在阅读this site,如果我这样做的话:
include<name.h>
然后我的库对象的格式为libname.o。但是,例如,this site表示包含math.h的库名是libm.a.我在这里弄错了什么?
答案 0 :(得分:2)
命名约定name.h
和libname.a
就是一个惯例。许多图书馆都遵循它,但不是全部。特别是,许多平台只有一个文件libc.a
中的所有C库,无论分类到不同的标头中。其他人在libm.a
中有数学库的部分,然后是额外的。
答案 1 :(得分:1)
库可以static
或dynamic
库,静态库将具有libname.a
形式的名称,也称为归档文件,而动态库将具有libname.so
,也称为共享对象(so)。
通常,作为一种惯例,人们会遵循name.h
到libname.*
的关联,以便轻松获得荣誉:)但这仅仅是一种惯例。您可以在打包库时按照自己的命名。
链接时,我们使用-lname
指定了库,链接器自动将其扩展为libname.a
或libname.so