아래 사이트에 정말 잘 정리 되어 있다.
http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html
Linux | Solaris | HP-UX | Compaq (Digital) Tru64 | AIX | SGI | Win32 | MacOS X | VMS | OS/390 | ||
---|---|---|---|---|---|---|---|---|---|---|---|
Version | [kernel 2.x, GCC 2.95.x and later] | [2.8] | [11] | [4.x] | [4.3 and later] | [Irix 6.5] | [NT 4] | [10.x] | [unmaintained] | [unmaintained] | |
1 | compiler flag (position independent code) | -fPIC | -KPIC, -Kpic | +z/+Z | xxxx | xxxx | -KPIC (default) | xxxx | -fno-common | xxxx | -DLL |
2a | shared library creation flag | -shared | -G | -b | -shared | -bM:SRE | -shared | link /DLL | cc -bundle, -dynamiclib libtool -dynamic |
/SHARE | xxxx |
2b | shared library creation (C++) | g++ -fPIC -shared -o | CC -G -o | aCC -b -o | cxx -shared -o | xlC -G (or -qmkshrobj) obsolete:/usr/vacpp/bin/makeC++SharedLib -G -o (was in /usr/ibmcxx/bin or /usr/lpp/xlC/bin/) |
CC -shared -o | CL -LD -Fexxx.DLL | ?? libtool -dynamic |
?? | ?? |
2c | static archiver (C++) | ar | CC -xar -o | ar | ar | ar | CC -ar -o | LIB (avoid link /lib that creates __impl symbols) | ?? libtool -static |
?? | ?? |
3a | library name | (ld option) -soname name | -h name | (ld option) +h name | (ld option) -soname name | xxxx | (ld option) -soname name | /OUT:name | -compatibility_version, -current_version | /SHARE= | xxxx |
3b | file extension | .so | .so | .sl | .so | .so (or .a) | .so | .DLL | .dylib | .EXE | ?? |
4 | executable link options | -Bdynamic -Lpath -lname |
-Bdynamic -Lpath -lname |
-a,shared -Lpath -name |
-no_archive -Lpath -lname |
-brtl -bdynamic -Lpath -lname |
-Bdynamic, -Lpath -lname |
Controlled by .lib files | ?? | xxxx | filename/SHAREABLE |
5a | runtime path specification | -rpath <path> | -R <pathlist> | -Wl,+b <pathlist> -Wl,+s | -rpath <path> | -blibpath:<path> (by default, it is set to the arguments of -L) |
-rpath <path> | /LIBPATH: | -install_name <path> | xxxx | xxxx |
5b | Does not build the path for shared libraries into the executable | default | -norunpath | chatr +b disable <file> | default | -blibpath:/usr/lib:/lib | default | ?? | ?? | ?? | ?? |
6 | controlling symbols | using a script file (see "info ld") | -z defs/ nodefs/ muldefs | +v[no] shlibunsats | -expect [error] _unresolved | xxxx | -ignore[no] _unresolved | /FORCE: MULTIPLE [UNRESOLVED] | ?? | xxxx | xxxx |
Linux | Solaris | HP-UX | Compaq (Digital) Tru64 | AIX | SGI | Win32 | MacOS X | VMS | OS/390 | ||
7 | exports file/link option (see notes) | using a script file (see "info ld") | using a script file (see "man ld") | +e,symname | -exported_symbol | .exp | -exported_symbol -exports_file filename |
.def/__declspec(dllexport) | -exported_symbols_list | /SYMBOL_TABLE=(...) | .x file/ #pragma export() |
8 | hiding symbols | using a script file: VERSION command (see "Version Script" section in "info ld") | using a script file (see "man ld") (see thisarticle) | -h symname | -hidden_symbol, -hidden | xxxx | -hidden_symbol, -hiddens_file filename |
using a .def file | -unexported_symbols_list | xxxx | xxxx |
9 | runtime library path | LD_LIBRARY_PATH | LD_LIBRARY_PATH LD_LIBRARY_PATH_64 |
SHLIB_PATH LD_LIBRARY_PATH (64 bits) |
LD_LIBRARY_PATH | LIBPATH | LD_LIBRARY_PATH LD_LIBRARYN32_PATH LD_LIBRARY64_PATH |
. and then PATH | DYLD_LIBRARY_PATH DYLD_FALLBACK_LIBRARY_PATH |
SYS$SHARE | LIBPATH |
10 | symbol binding | -Bsymbolic | -Bsymbolic | -Bsymbolic /immediate /deferred | xxxx | xxxx | -Bsymbolic | xxxx | ?? | xxxx | xxxx |
11 | runtime debugging | (c.f. man ld.so) LD_BIND_NOW LD_TRACE_LOADED_OBJECTS LD_DEBUG=help ltrace |
(c.f. man ld.so.1) LD_BIND_NOW LD_DEBUG ld -D help |
(c.f. man dld.sl) _HP_DLDOPTS |
(c.f. man loader) LD_BIND_NOW _RLD_ARGS |
LDR_CNTRL | (c.f. man rld) LD_BIND_NOW _RLD_PATH, _RLD_ARGS |
xxxx | DYLD_BIND_AT_LAUNCH DYLD_PRINT_LIBRARIES DYLD_PREBIND_DEBUG |
xxxx | xxxx |
12 | runtime preload | LD_PRELOAD | LD_PRELOAD | LD_PRELOAD (probably HP-UX >= 11) | _RLD_LIST "xxx.so:DEFAULT" | xxxx | _RLD_LIST "xxx.so:DEFAULT" | ?? | DYLD_INSERT_LIBRARIES | ?? | ?? |
13 | loader | ld.so | ld.so | dld.sl | loader | xxxx | rld | xxxx | dyld | xxxx | xxxx |
14 | runtime performance | xxxx | xxxx | fastbind tool | -quickstart_info | xxxx | -quickstart_info | /DELAYLOAD | xxxx | xxxx | xxxx |
Linux | Solaris | HP-UX | Compaq (Digital) Tru64 | AIX | SGI | Win32 | MacOS X | VMS | OS/390 | ||
15 | versioning | using a script file: VERSION command (see "info ld") | using a script file (see "man ld") -M mapfile |
xxxx | xxxx | xxxx | -set_version/-exact_version/ -ignore_version |
/VERSION:major.minor | ?? | /GSMATCH= | xxxx |
16 | entry points | xxxx | xxxx | xxxx | xxxx | xxxx | xxxx | DllMain | xxxx | xxxx | xxxx |
17 | dynamic loading / dynamic symbol access | dlopen / dlsym | dlopen / dlsym | shl_load / shl_findsym (64 bits) dlopen / dlsym |
dlopen / dlsym | loadquery/loadbind (AIX 4.2) dlopen / dlsym |
dlopen / dlsym | LoadLibrary / GetProcAddress | "man 3 dyld" | lib$find_image_symbol | dllload / dllqueryfn/ dllqueryvar |
18 | utilities | ldd, ldconfig, objdump, ltrace, readelf | ldd, elfdump, pvs, dumpstabs (compilers V.6), crle (Solaris>=8) | chatr odump ldd, elfdump (HP-UX >= 11) |
odump -Dl | dump -H ldd (in AIX tools) |
elfdump -Dl pldd ldd (IRIX >= 6.5) |
DUMPBIN, depends, EXEHDR, link -dump | otool | ANALYSE/IMAGE | xxxx |
19 | documentation | man: ld, ld.so, ldd info: ld, gcc, binutil HOWTO: ELF-HOWTO, GCC-HOWTO |
man: ld, ld.so.1, ldd, pvs | man: ld, dld.sl, chatr | man: ld, loader, odump | man: ld, dump | man: dso, ld, rld, elfdump, ldd | MSDN | man: ld, libtool, dyld, otool | ?? | ?? |
Linux | Solaris | HP-UX | Compaq (Digital) Tru64 | AIX | SGI | Win32 | MacOS X | VMS | OS/390 |
'프로그램언어 > C/C++' 카테고리의 다른 글
[AIX]dynamic library & static library (0) | 2012.03.24 |
---|---|
POSIX 와 Thread-safety (0) | 2012.03.24 |
GCC 사용법 (0) | 2012.03.24 |
xlC 컴파일 옵션 - AIX (0) | 2012.03.24 |
GCC Compile 옵션 및 과정 (0) | 2012.03.24 |