Получите список статических библиотек, пользовавшихся в исполняемом файле

Это только собирается работать на Список и не любой IEnumerable, но в LINQ существует это:

IList<Object> collection = new List<Object> { 
    new Object(), 
    new Object(), 
    new Object(), 
    };

foreach (Object o in collection)
{
    Console.WriteLine(collection.IndexOf(o));
}

Console.ReadLine();

@Jonathan я не сказал, что это был большой ответ, я просто сказал, что это просто показывало, что было возможно сделать то, что он спросил:)

@Graphain я не ожидал бы, что он будет быстр - я не совсем уверен, как это работает, это могло повторить через весь список каждый раз для нахождения соответствующего объекта, который будет helluvalot, выдерживает сравнение.

Однако Список мог бы сохранить индекс каждого объекта наряду с количеством.

у Jonathan, кажется, есть лучшая идея, если он уточнил бы?

было бы лучше просто провести подсчет того, где Вы готовы в foreach хотя, более просты, и более адаптируемы.

43
задан Andrew Medico 14 May 2014 в 23:09
поделиться

3 ответа

ldd shows dynamically linked libraries

nm shows the symbols in the file.

To see which symbols come from static libraries requires running nm against those libraries to get a list of the symbols (functions, etc.) in them, then comparing them to what your list of symbols from nm .

You compare lists with the comm command. See man comm for details.

This was taken from this forum here.

47
ответ дан 26 November 2019 в 22:54
поделиться

Если данный компилятор не хранит какие-то метаданные внутри двоичного файла, тогда нет. Статическая библиотека - это код, который непосредственно компилируется в двоичный файл.

5
ответ дан 26 November 2019 в 22:54
поделиться

Нет, имена библиотек отбрасываются в процессе связывания. Однако, если ваш исполняемый файл содержит отладочную информацию (т. Е. Он был скомпилирован с флагом -g), вы можете получить информацию из него.

11
ответ дан 26 November 2019 в 22:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: