[t:/]$ 지식_

내가 ldd인지 ldd가 나인지. rpath, 링킹, prelink…

2011/11/04

ld.so에 대해서 많이 알아두면 몸에 좋다.
http://linux.die.net/man/8/ld.so

/lib/ld-linux.so.2 –list ./hello 

LD_TRACE_LOADED_OBJECTS=1 LD_DEBUG=libs /lib/i386-linux-gnu/libc.so.6 
/lib/ld-linux.so.2 (0xb7664000)
linux-gate.so.1 =>  (0xb7663000)

동적 라이브러리에 관한 문서
http://wiki.kldp.org/HOWTO/html/Secure-Programs-HOWTO/dlls.html

특히 elf/rtld.c 와 sysdeps/generic/dl-sysdep.c 파일을 보라. 이는 uid 와 gid 를 euid 와 egid 와 같게 만들어서 프로그램을 호출하는 경우 이러한 변수들이 최대한 영향을 미칠 것임을 의미한다. 다른 유닉스 계열 시스템은 이 상황을 다르지만 동일한 이유로 다룬다: setuid/setgid 프로그램은 환경 변수 셋에 의해 부당하게 영향을 받지 않아야 한다.

Program Library Howto
http://www.dwheeler.com/program-library/Program-Library-HOWTO/index.html

One link option you might use is ld’s “rpath” option, which specifies the runtime library search path of that particular program being compiled. From gcc, you can invoke the rpath option by specifying it this way:

-Wl,-rpath,$(DEFAULT_LIB_INSTALL_PATH)

If you use this option when building the library client program, you don’t need to bother with LD_LIBRARY_PATH (described next) other than to ensure it’s not conflicting, or using other techniques to hide the library.

LD_LIBRARY_PATH는 개발용으로만 쓰고 ldconfig 때려서 /etc/ld.so.cache 생성해서 사용하자~ 크로스용 ldconfig가 없으면 잘 찾으면 있음;

Load-time relocation of shared libraries
https://eli.thegreenplace.net/2011/08/25/load-time-relocation-of-shared-libraries/

Optimizing Linker Load Times
http://lwn.net/Articles/192624/

Fast and Flexible Shared Libraries, Douglas B. Orr, John Bonn, Jay Lepreau, and Robert Mecklenburg University of Utah

prelink
http://people.redhat.com/jakub/prelink.pdf

우분투에서 prelink 깔면 깔림.

prelink hello

당연히 원래 hello 보다 크기 증가.

arm용 prelink
http://elinux.org/Pre_Linking

omap fastboot
http://www.makelinux.com/emb/fastboot/omap

montavista 자료
http://www.makelinux.com/emb/fastboot/MontaVista

readahead 도 찾아보자.

http://www.cinsk.org/cfaqs/
그냥 C 프로그래밍 FAQ…









[t:/] is not "technology - root". dawnsea, rss