gcc 옵션중에..

shamlock의 이미지

gcc 옵션중에..

makefile 보다보니깐 -fpic 가 잇던데

그래서 검색해보니깐 -fPIC 도 있는데..
좀 쉽게 설명을 부탁드립니다. ㅠㅠ

kicom95의 이미지

-fPIC 을 많이 쓰는것으로 알고 있습니다.

공유라이브러리를(*.so) 생성할때 쓰는 옵션입니다.

공유라이브러리는 일반 정적(*.a) 라이브러리와 달리 코드와

분리되기 때문에 재배치와 또.. -_- 뭐지..까 먹었네요...

여러가지를 좀더 지원해야 하므로 -fPIC 옵션으로 처리를 해야합니다.

가자 해외로 ~ .. 돈 벌러.

shamlock의 이미지

-fpic를 알고 싶었는데

@.@

kicom95의 이미지

shamlock wrote:
-fpic를 알고 싶었는데

저의 짧은 지식으로는 -fpic 이나 -fPIC 이나 동일한것으로

알며 후자를 많이 쓰는것으로... (확신은 못하겠네요 )

가자 해외로 ~ .. 돈 벌러.

nohmad의 이미지

       -fpic
           Generate position-independent code (PIC) suitable for use in a
           shared library, if supported for the target machine.  Such code
           accesses all constant addresses through a global offset table
           (GOT).  The dynamic loader resolves the GOT entries when the pro-
           gram starts (the dynamic loader is not part of GCC; it is part of
           the operating system).  If the GOT size for the linked executable
           exceeds a machine-specific maximum size, you get an error message
           from the linker indicating that -fpic does not work; in that
           case, recompile with -fPIC instead.  (These maximums are 16k on
           the m88k, 8k on the SPARC, and 32k on the m68k and RS/6000.  The
           386 has no such limit.)

           Position-independent code requires special support, and therefore
           works only on certain machines.  For the 386, GCC supports PIC
           for System V but not for the Sun 386i.  Code generated for the
           IBM RS/6000 is always position-independent.

       -fPIC
           If supported for the target machine, emit position-independent
           code, suitable for dynamic linking and avoiding any limit on the
           size of the global offset table.  This option makes a difference
           on the m68k, m88k, and the SPARC.