我正在构建一个RPM,在构建时我发现以下命令用于构建RPM的一个共享对象。
g++ /*some compiler options*/ -O1 -Wl,--version-script abc.map -L<some paths> and the remaining command.
我不明白命令中“--version-script”选项和“abc.map”文件的用途是什么。它能做什么? Follwoing是“abc.map”文件的内容。
URE_1{
global:
_ZTI*; _ZTS*; # weak RTTI symbols for C++ exceptions
/*some method names explicitly*/
local:
*;
}
我认为它与在“共享对象”文件中提供符号的可用性有关,但我不确定。
答案 0 :(得分:1)
我认为它与在“共享对象”文件中提供符号的可用性有关,但我不确定。
你是对的。
链接器在使用ELF时支持符号版本。符号版本仅在使用共享库时才有用。动态链接器在运行可能已与早期版本的共享库链接的程序时,可以使用符号版本来选择特定版本的函数。