g ++命令中“.map”文件的用途是什么?

时间:2014-03-03 06:51:03

标签: c++ linux g++ rpmbuild

我正在构建一个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:
     *;
}

我认为它与在“共享对象”文件中提供符号的可用性有关,但我不确定。

1 个答案:

答案 0 :(得分:1)

  

我认为它与在“共享对象”文件中提供符号的可用性有关,但我不确定。

你是对的。

请参阅3.9 VERSION Command

  

链接器在使用ELF时支持符号版本。符号版本仅在使用共享库时才有用。动态链接器在运行可能已与早期版本的共享库链接的程序时,可以使用符号版本来选择特定版本的函数。