Issue
I've already read the gcc
manpage, but I still can't understand the difference between -fpic
and -fPIC
. Can someone explain it, in a very simple and clear way?
Related questions:
- What does -fPIC mean when building a shared library?
- What, if any, are the implications of compiling objects with gcc -fPIC flag if they get used in executables?
Solution
http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
Use `-fPIC` or `-fpic` to generate position independent code. Whether to use `-fPIC` or `-fpic` to generate position independent code is target-dependent. The `-fPIC` choice always works, but may produce larger code than `-fpic` (mnemonic to remember this is that PIC is in a larger case, so it may produce larger amounts of code). Using `-fpic` option usually generates smaller and faster code, but will have platform-dependent limitations, such as the number of globally visible symbols or the size of the code. The linker will tell you whether it fits when you create the shared library. When in doubt, I choose `-fPIC`, because it always works.Answered By - Anycorn