为了理解步调怎样使用共享对象,让我们起首看看可执行文件的格式,然后检查步调启动时发生的步调。 ELF format
QNX Neutrino RTOS 使用 ELF(Executable and Linking Format)二进制格式。ELF不但简化了创建共享库的使命,而且还增强了运行时模块的动态加载。
在下图中,我们展示了ELF文件的两个视图:链接视图和执行视图。链接视图在链接步调或链接库时使用,它处置惩罚对象文件中的节【sections】。节【sections】包含大量的对象文件信息:数据【data】、指令【instructions】、重定位信息【relocation information】、符号【symbols】、调试信息【debugging information】等。在步调运行时使用执行视图,执行视图则处置惩罚段【segments】。
在链接时,通过将具有相似属性的节【sections】归并为段【segments】来构建步调或库。通常,全部可执行数据节【executable data sections】和只读数据节【read-only data sections】,归并为单个文本段【text segment】,而 data 及 “BSS” 则归并为 data 段【data segment】。这些段称为加载段【load segments】,因为它们必要在进程创建时加载到内存中。其他部分,如符号信息【symbol information】和调试节【debugging sections】被归并到其他非加载段中。
ELF format
QNX Neutrino RTOS 使用 ELF(Executable and Linking Format)二进制格式。ELF不但简化了创建共享库的使命,而且还增强了运行时模块的动态加载。
在下图中,我们展示了ELF文件的两个视图:链接视图和执行视图。链接视图在链接步调或链接库时使用,它处置惩罚对象文件中的节【sections】。节【sections】包含大量的对象文件信息:数据【data】、指令【instructions】、重定位信息【relocation information】、符号【symbols】、调试信息【debugging information】等。在步调运行时使用执行视图,执行视图则处置惩罚段【segments】。
在链接时,通过将具有相似属性的节【sections】归并为段【segments】来构建步调或库。通常,全部可执行数据节【executable data sections】和只读数据节【read-only data sections】,归并为单个文本段【text segment】,而 data 及 “BSS” 则归并为 data 段【data segment】。这些段称为加载段【load segments】,因为它们必要在进程创建时加载到内存中。其他部分,如符号信息【symbol information】和调试节【debugging sections】被归并到其他非加载段中。