Третья сторона предоставила мне статическую библиотеку lib (.a) для связи на станции Solaris. Я попытался скомпилировать с sunpro и не смог выполнить ссылку.Есть ли способ узнать, какой компилятор создал статическую библиотеку?
Я предполагаю, что проблема исходит от используемого компилятора (gcc вместо?) Или просто его версии (поскольку std lib, предоставленный компилятором, может измениться с версии, ожидаемой библиотекой AFAIK, это может привести к ошибкам в ссылке шаг).
Как я могу узнать, какой компилятор использовался для создания этой библиотеки? Есть ли какие-то инструменты? Какой-то вариант в sunpro/gcc или что-то еще?
Как подсказка: Я читал некоторое время назад, что компиляторы используют различные соглашения о манипуляции при создании объектных файлов (правда?). Тем не менее, «nm --demangle» командной строки хорошо печатает все имена функций из символов отладки в этой статической lib. Как это работает ? Если мое предположение нормально, nm действительно имеет способ решить, какое соглашение используется в статической библиотеке, не так ли? Или это просто означает, что lib был сгенерирован GNU gcc, поскольку nm является частью GNU binutils?
Я не близко к моей рабочей станции, так что я не могу скопировать & вставить вывод ошибок из линкера (не на данный момент, но я мог бы скопировать их в дальнейшем редактировать)
Почему вы не спрашиваете у «третьей стороны», кто предоставил библиотеку инструкции о том, как ее использовать? – 2009-04-07 22:20:22
Я спросил их. Но ответа от их команды поддержки, которая неохотно спрашивает команду разработчиков, кажется ...:/ –