2009-08-06 4 views
1

우리의 공유 라이브러리를 프로파일하려고하지만 환경 변수 LD_PROFILE이 설정 될 때마다 "PLTREL을 오브젝트에서 찾을 수 없습니다"라는 메시지가 나타납니다. 뭐라 구요? 어떤 종류의 링커 플래그가 없거나 없습니까? 인터넷에 관한 정보가없는 것 같습니다. sprof의 맨 페이지는 약 10 단어입니다.sprof "PLTREL 찾을 수 없음 오류"

답변

1

an unanswered question on Google Groups에 따르면이 문제가있는 사람이 처음 인 것처럼 보입니다.

pltrel은 plt-rel ative라고 생각합니다. 일부 ELF design notes에,

There is a .plt section created in the code segment, which is an array of function stubs used to handle the run-time resolution of library calls.

그리고 here 년대보다 아직 약간의 : 공유 라이브러리가 컴파일 또는 조립 된 방법에 문제가있는 것처럼

The next section I want to mention is the .plt section. This contains the jump table that is used when we call functions in the shared library. By default the .plt entries are all initialized by the linker not to point to the correct target functions, but instead to point to the dynamic loader itself. Thus, the first time you call any given function, the dynamic loader looks up the function and fixes the target of the .plt so that the next time this .plt slot is used we call the correct function. After making this change, the dynamic loader calls the function itself.

나에게 소리. 다행히 몇 가지 더 searches to elf PLT section 올바른 트랙에 도착.

0

찾을 당신을 위해 relevante 할 수있다 this :

Known issues with LD_AUDIT

➢ LD_AUDIT does not work with Shared Libraries with no code in them.

➢ Example ICU-4.0 “libicudata.so”

➢ Error: “no PLTREL found in object /usr/lib/libicudata.so.40”

➢ Recompile after patching libicudata by sed'ing -nostdlib etc away sed -i -- "s/-nodefaultlibs -nostdlib//" config/mh-linux

그것은 동일 LD_PROFILE

적용 보인다
관련 문제