objinfo
 

fbc将额外的信息存储到它生成的对象文件(.o)中,以便在链接时再次读取它们。当前存储的信息由-lang / -mt设置和编译该对象文件时指定的所有库/搜索路径(-l,#inclib,-p,#libpath)组成。这样,当混合使用不同选项编译的对象文件时,fbc可能会显示警告,因为它们可能不兼容,并且fbc可以通过#inclib指定的库自动链接,即使用户在单独的步骤中编译和链接。

这是通过在编译时发出一个名为“fbctinf”(FreeBASIC编译时间信息?)的额外部分,并在链接时读取它来完成的。此外,当构建静态库时,fbc将创建一个额外的对象文件(称为__fb_ct.inf),其中只包含该额外的信息,并将其添加到库中。在链接时,fbc查看每个库以确定它是否具有这样的__fb_ct.inf文件。

为了做到这一点,fbc有一个自定义COFF,ELF32和归档文件格式的读取器,可以提取.fbctinf部分的内容。以前,fbc使用binutils的libbfd来做到这一点,但是依赖于libbfd是有问题的,特别是因为它的ABI非常不稳定。