Can I get a report of ALL the libraries linked when building my C++ executable (gcc)? (включая статически связанные)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Can I get a report of ALL the libraries linked when building my C++ executable (gcc)? (включая статически связанные)

Сообщение Anonymous »

У меня есть унаследованное мной приложение C++, которое состоит из:
  • Моего основного приложения
  • Несколько библиотек для конкретного приложения (libapp1, libapp2 и т. д.)
  • Несколько «сторонних» библиотек (большинство «третьих сторон — это просто другие команды в компании»), связанных как с основным приложением, так и с библиотеками libappX для конкретных приложений, а также с другими Библиотеки третьей части - например. libext1, libext2 и т. д.
Другими словами, мой код выглядит так:

Код: Выделить всё

// main.C
#include 
#include 
#include 

// app1/a1l1.H
#include 
#include 

// app2/a2l1.H
#include 

// ext1/e1l1.H
#include 

// ext3/e3l1.H
#include 
ВОПРОСЫ:

1) Как узнать, какие библиотеки были скомпонованы в окончательный исполняемый файл? Это должно включать статически связанные файлы

Другими словами, мне нужен ответ «app1, app2, ext1, ext2, ext3, ext4»

В идеале ответ должен быть доступен из самого исполняемого файла (у меня есть его отладочная версия на случай, если это сделает его более возможным). Если это невозможно, я хотел бы знать, есть ли простой инструмент анализа кода (то есть что-то внутри самого gcc), чтобы обеспечить этот анализ.

Обратите внимание, что объектные файлы для внешних библиотек уже созданы, поэтому, просматривая журналы сборки, чтобы увидеть, что было связано, я беспокоюсь, что «ext4» не появится в журнале, поскольку мы не будем создавать уже предварительно созданную библиотеку «ext3».

ПРИМЕЧАНИЕ: запуск «nmake» с параметром DEPS, установленным на «да», для пересборки всех файлов НЕ является вариантом. Но у меня ДЕЙСТВИТЕЛЬНО есть доступ к полному исходному коду внешних библиотек.

2) Немного отдельный и менее важный вопрос: как я могу узнать список всех включаемых файлов, используемых во всем дереве исходного кода, которое я создаю. Опять же, в идеале использовать уже созданный исполняемый файл, для которого у меня есть отладочная версия.

==============

ОБНОВЛЕНИЕ: просто чтобы уточнить: наши библиотеки связаны статически, поэтому ldd (список синхронных зависимостей) не работает.

Кроме того, ответ может быть либо для Solaris, либо для Linux - не имеет значения.

Я пробовал использовать nm, но там не указаны библиотеки

Подробнее здесь: https://stackoverflow.com/questions/492 ... executable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»