#c
#c
Вопрос:
Есть ли какой-нибудь способ получить абсолютный путь к функциям в файлах карты? Файлы карт поддерживают следующий формат
0001:000016a0 func 00000001400026a0 f lib:func.o
Есть ли какой-либо способ получить абсолютный путь к «func»
Ответ №1:
В зависимости от вашей ситуации это может оказаться бесполезным, но некоторые компоновщики не поддерживают наличие нескольких объектных файлов с одинаковым именем в разных каталогах. Поэтому, если вы дадите им some_directory/func.o и some_other_directory/func.o some_other_directory, только один из них будет связан. Я знаю, что CodeWarrior делает это.
Чтобы избежать этой проблемы, я удостоверяюсь, что все мои объектные файлы имеют уникальные имена. Соглашение, которое я использую, заключается в том, чтобы включать сокращение имени модуля, например, func_module.o. С помощью этого соглашения легко идентифицировать объектный файл. Или, если вам нужно сделать это программно, достаточно любого метода поиска файлов.
Некоторые версии Visual Studio помещают все объектные файлы в один каталог, независимо от организации файлов .c и / или .cpp, и автоматически добавляют числовые суффиксы, чтобы избежать конфликтов. Для определения, какой объектный файл к какому файлу переходит .c, требуется прочитать файл проекта.
Комментарии:
1. Я думаю, вы правы. Файл Map получает свои данные из obj-файлов, которые обычно хранятся в некотором общем каталоге. Поэтому я, возможно, не смогу получить абсолютные пути к файлам c-файлов.