- Моего основного приложения
- Несколько библиотек для конкретного приложения (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
Мобильная версия