Получить список функций в общей библиотеке?

Это является многоступенчатым, таким образом, это неоптимально, но здесь идет.

1) Найдите длину самой длинной строки в file1.txt.

while read line
do
echo ${#line}
done < file1.txt | sort -n | tail -1

С Вашим примером самая длинная строка равняется 22.

2) Используйте awk для заполнения file1.txt, дополнение каждой строки меньше чем 22 символа до 22 с printf оператор.

awk 'FS="---" {printf "%-22s\n", $1}' < file1.txt > file1-pad.txt

Примечание: Для FS используйте строку, которая не существует в file1.txt.

3) Используйте вставку, как Вы сделали прежде.

$ paste file1-pad.txt file2.txt
Languages               Minimal automaton
Recursively enumerable  Turing machine
Regular                 Finite

Если это - что-то, что Вы часто делаете, это может легко быть превращено в сценарий.

14
30.09.2010, 11:54
2 ответа

Существуют различные форматы исполняемого файла на *, отклоняют систему. a.out был распространенным форматом несколько лет назад и сегодня его ELF на соседнем все главные системы.

ELF состоит из заголовки, описывающие каждый из разделов данных файлов.

Часть, которую Вы ищете, является таблицей символов, где каждый символ (функция, переменная) отображается на своем адресе.

Общие библиотеки сохраняют свои глобальные символы в разделе названными .dynsym

Что Вы ищете, символы функции типа и глобальной привязки в этом разделе.

readelf --syms ./libfoo.so даст Вам вывод символов.

На Солярисе и FreeBSD там также elfdump доступный.

objdump дисплеи также большая информация о Вашем объектном файле и можно указать раздел при помощи -j переключатель.

15
27.01.2020, 19:50

Используйте nm с-D (динамический) переключатель:

$ nm -D /usr/lib/libpng.so
00000000 A PNG12_0
     w _Jv_RegisterClasses
     w __cxa_finalize
     U __fprintf_chk
     w __gmon_start__
     U __longjmp_chk
     U __memcpy_chk
     U __snprintf_chk
     U __stack_chk_fail
     U _setjmp
     U abort
     U crc32
     U deflate
     U deflateEnd
     U deflateInit2_
     U deflateReset
     U fflush
     U fread
     U free
     U fwrite
     U gmtime
     U inflate
     U inflateEnd
     U inflateInit_
     U inflateReset
     U malloc
     U memcmp
     U memcpy
     U memset
00003fd0 T png_access_version_number
00016ef0 T png_build_grayscale_palette
00004810 T png_check_sig
0001d2d0 T png_chunk_error
0001d070 T png_chunk_warning
00013390 T png_convert_from_struct_tm
00014a90 T png_convert_from_time_t
000048d0 T png_convert_to_rfc1123
000051b0 T png_create_info_struct
00013040 T png_create_read_struct
00012c20 T png_create_read_struct_2
00014a40 T png_create_write_struct
00014710 T png_create_write_struct_2
00004230 T png_data_freer
00005140 T png_destroy_info_struct
00010eb0 T png_destroy_read_struct
00013da0 T png_destroy_write_struct
0001d0f0 T png_error
0001ca10 T png_free
00004a50 T png_free_data
0001c9d0 T png_free_default
...
13
27.01.2020, 19:50

Теги

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