Добрый день.
Подскажите новичку.
Имеем прогу на С.
#include <stdio.h>
#include <ещё много всего>
......
Далее по тексту встречаю например функцию subnmrx_by_ss().
...
subnmrx_by_ss(buffer,1024);
...
Вопрос: какой лучший способ узнать из какой библиотеки эта функция? Я конечно могу сделать что-то вроде grep -R func_name ../libs/*. Но может быть есть вариант лучше? Может есть готовая утилитка, к-ая мне красиво напечатает обо всех включенных изве переменных/функциях/и т.д.
Другими словами хочется как можно быстрее понять откуда что-то взято в программе(к-ую кто-то писал несколько лет и она обросла за это время библиотеками и т.п.).
Заранее спасибо!
если очень грубо, то когда в исходнике используется к-л внешняя библиотечная функция, можно узнать только три вещи: 1. что она внешняя, 2. что она используется, 3. в каком заголовочном файле (.h) она определена.состав библиотек, используемых для проекта можно найти в makefile (если таковой есть). они будут указаны либо явно -- libfoo.a, либо неявно в виде ключей вида -lfoo. собрать все экспортируемые имена из библиотеки можно с помощью nm(1).
если же речь идет о том, в каком заголовочном файле имеется определение искомой функции, то наверное проще грепом пройтись по директориям, в которых смотрит компилятор. список таких мест тоже в makefile (ну и плюс /usr/include).
все сильно зависит от структуры проекта, больше инфы - точнее ответ.
>Вопрос: какой лучший способ узнать из какой библиотеки эта функция? Я конечно
>могу сделать что-то вроде grep -R func_name ../libs/*. Но может быть
>есть вариант лучше? Может есть готовая утилитка, к-ая мне красиво напечатает
>обо всех включенных изве переменных/функциях/и т.д.есть nm, но она не всегда сможет помочь,
>Другими словами хочется как можно быстрее понять откуда что-то взято в программе(к-ую
>кто-то писал несколько лет и она обросла за это время библиотеками
>и т.п.).выполни ctags -R директория_исходников заголовков далее в виме set tags=tags и потом контрол+5 g по именам функций
>выполни ctags -R директория_исходников заголовков далее в виме set tags=tags и
>потом контрол+5 g по именам функцийДополню :)
>>выполни ctags -R директория_исходников заголовков далее в виме set tags=tags и
>>потом контрол+5 g по именам функций
>
>Дополню :)
>
>http://midnight-commander.org/wiki/doc/editor/codejumpСпасибо всем! vim+ctags - это вещь!!!!!!! то о чем я мечтал. особенно :TlistOpen.
PS а в midnight'е не получилось у меня.. я его особо и не пользую, но всё же хотелось бы знать как заставить перейти его к нужной функции/переменной. по ссылке сказано "For jump to definition (find tag) you need position cursor at end of the word and press M-Enter". M - это как я понимаю Esc или Alt. Не работает.....
>PS а в midnight'е не получилось у меня.. я его особо иВерсия должна быть >= 4.7.0-pre1
>не пользую, но всё же хотелось бы знать как заставить перейти
>его к нужной функции/переменной. по ссылке сказано "For jump to definition
>(find tag) you need position cursor at end of the word
>and press M-Enter". M - это как я понимаю Esc или
>Alt. Не работает.....Да, оно. Должно работать. Версию проверьте.
>[оверквотинг удален]
>
>Версия должна быть >= 4.7.0-pre1
>
>>не пользую, но всё же хотелось бы знать как заставить перейти
>>его к нужной функции/переменной. по ссылке сказано "For jump to definition
>>(find tag) you need position cursor at end of the word
>>and press M-Enter". M - это как я понимаю Esc или
>>Alt. Не работает.....
>
>Да, оно. Должно работать. Версию проверьте.Спасибо!