Для чего нужен файл «.map» в команде g ++?

0

Я создаю 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:
     *;
}

Я думаю, что это связано с предоставлением символов в файле "shared object", но я не уверен.

Теги:
g++
rpmbuild

1 ответ

1
Лучший ответ

Я думаю, что это связано с предоставлением символов в файле "shared object", но я не уверен.

Ты прав.

См. 3.9 Команда VERSION:

Компилятор поддерживает версии символов при использовании ELF. Варианты символов полезны только при использовании разделяемых библиотек. Динамический компоновщик может использовать версии символов для выбора конкретной версии функции при запуске программы, которая могла быть связана с более ранней версией разделяемой библиотеки.

  • 0
    Да, пример этого - когда Red Hat создает патч, они часто помечают его. Тогда более новые версии другого программного обеспечения явно отметят, что им нужна определенная помеченная версия. Я столкнулся с этим с пропатченным expat 1.x.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню