Исполняемая программа загружает динамическую библиотеку несколько раз при наблюдении с помощью strace - PullRequest
0 голосов
/ 27 августа 2018

Я создал сложную исполняемую программу в MIPS для библиотеки uCLibc и многих других динамических разделяемых библиотек. Эта программа работает нормально, но для ее загрузки требуется более 20 секунд. Когда я наблюдал ее за "strace", я обнаружил, что она продолжает открывать и закрывать некоторые базовые библиотеки, такие как libm, libc, libgcc и т. Д. Пожалуйста, найдите журнал ниже:

open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=477720, ...}) = 0
close(3)                                = 0
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=213564, ...}) = 0
close(3)                                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=477720, ...}) = 0
close(3)                                = 0
open("/lib/libm.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=96616, ...}) = 0
close(3)                                = 0
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=213564, ...}) = 0
close(3)                                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=477720, ...}) = 0
close(3)                                = 0
open("/lib/libdl.so.0", O_RDONLY)       = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=9504, ...}) = 0
close(3)                                = 0
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=213564, ...}) = 0
close(3)                                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=477720, ...}) = 0
close(3)                                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=477720, ...}) = 0
close(3)

Я уверен, что это непрерывное действие открытия и закрытия замедлило мою программу, я попытался создать ld.so.cache в / etc, но он не работает, ему все еще нужно 20 секунд для загрузки. У кого-нибудь есть идея? Спасибо.

...