2010-05-03 6 views
0

작업 할 할당자를 잡으려고하는데, 그렇지 않을 것 같습니다. 나는 많은 동적 메모리 관리를하는 벤치 마크 어플리케이션을 가지고있다. Hoard 및 glibc 메모리 관리자의 실행 시간은 동일합니다. 그것은 내가 옳은 일을하는지 궁금하게 만듭니다. 나는이 일을공유 자원 할당자가 "작동하지 않습니다"?

...

export LD_PRELOAD="/path/libhoard.so" 

g++ main.cpp -O3 -o bm -lpthread -lrt 

나는 할당을 Hoard의 링크를해야하지 않나요? 어떤 경로 (LD_PRELOAD)가 중요합니까, 아니면 어떤 경로라도 가질 수 있습니까?

나는 보물이 제대로로드 여부를 확인하기 위해 우분투 8.04, 및 g ++ 4.2.4

건배


아무도 (예 : 그렙 등) 리눅스 명령을 알고 실행되고있어 실제 할당자가 사용 되었습니까?

+0

, 당신이 에머리 버거입니까? 실제 경로로 대체하십시오. –

+0

물론 아닙니다. :-) 나는 그것이 필수적 이었는지 궁금 해서요./usr/local/lib 또는 그와 비슷한 디렉토리 – Cowboy

답변

6

저자의 주소는 Hoard입니다.

(a) LD_PRELOAD에 대한 경로는 정확합니다 (올바른 경우).

(b) 코드가 Hoard를 사용하는지 여부를 확인하려면 ldd 명령을 사용하십시오. 모든 것이 계획대로 진행 되었다면, Hoard 라이브러리를 볼 수 있습니다 (ldd의 두 번째 호출 이후에 두 번째 라인을 주목하십시오).

최고의

,

- 당신은 정말 사용하지 않는/경로를

bash-3.2$ ldd /bin/ls 
    linux-vdso.so.1 => (0x00007fffe6dfd000) 
librt.so.1 => /lib64/librt.so.1 (0x0000003159600000) 
libacl.so.1 => /lib64/libacl.so.1 (0x000000315e200000) 
libselinux.so.1 => /lib64/libselinux.so.1 (0x000000315d200000) 
libc.so.6 => /lib64/libc.so.6 (0x0000003154e00000) 
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003155a00000) 
/lib64/ld-linux-x86-64.so.2 (0x0000003154a00000) 
libattr.so.1 => /lib64/libattr.so.1 (0x0000003162000000) 
libdl.so.2 => /lib64/libdl.so.2 (0x0000003155600000) 
libsepol.so.1 => /lib64/libsepol.so.1 (0x000000315ce00000) 
bash-3.2$ export LD_PRELOAD=$PWD/libhoard.so 
bash-3.2$ ldd /bin/ls 
linux-vdso.so.1 => (0x00007fff24bfd000) 
/nfs/cm/users1/emery/scratch/projects/hoard/trunk/src/libhoard.so (0x00002b4885f42000) 
librt.so.1 => /lib64/librt.so.1 (0x0000003159600000) 
libacl.so.1 => /lib64/libacl.so.1 (0x000000315e200000) 
libselinux.so.1 => /lib64/libselinux.so.1 (0x000000315d200000) 
libc.so.6 => /lib64/libc.so.6 (0x0000003154e00000) 
libdl.so.2 => /lib64/libdl.so.2 (0x0000003155600000) 
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003155a00000) 
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x000000315b200000) 
libm.so.6 => /lib64/libm.so.6 (0x0000003155200000) 
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000315aa00000) 
/lib64/ld-linux-x86-64.so.2 (0x0000003154a00000) 
libattr.so.1 => /lib64/libattr.so.1 (0x0000003162000000) 
libsepol.so.1 => /lib64/libsepol.so.1 (0x000000315ce00000) 
bash-3.2$ 
관련 문제