আমি ইতিমধ্যে gcc
ম্যানপেজটি পড়েছি তবে এখনও -fpic
এবং এর মধ্যে পার্থক্য বুঝতে পারি না -fPIC
। কেউ কি খুব সাধারণ ও সুস্পষ্ট উপায়ে এটি ব্যাখ্যা করতে পারেন?
সম্পর্কিত প্রশ্নগুলি:
আমি ইতিমধ্যে gcc
ম্যানপেজটি পড়েছি তবে এখনও -fpic
এবং এর মধ্যে পার্থক্য বুঝতে পারি না -fPIC
। কেউ কি খুব সাধারণ ও সুস্পষ্ট উপায়ে এটি ব্যাখ্যা করতে পারেন?
সম্পর্কিত প্রশ্নগুলি:
উত্তর:
http://tldp.org/HOWTO/Program-Library-HOWTO/ Shared-libraries.html
অবস্থান -fPIC
বা -fpic
স্বাধীন অবস্থানের অবস্থান তৈরি করতে
ব্যবহার করুন । অবস্থান নির্ধারণের জন্য স্বাধীন কোডটি ব্যবহার করতে হবে -fPIC
বা -fpic
তৈরি করতে হবে target -fPIC
পছন্দ সবসময় কাজ করে, কিন্তু চেয়ে বড় কোড তৈরি করতে পারে -fpic
(এই যে মাংসখণ্ডের, একটি বৃহত্তর ক্ষেত্রে তাই এটি কোডের বৃহত্তর পরিমাণে উত্পাদন পারে মনে রাখা mnenomic)। ব্যবহারের -fpic
বিকল্পটি সাধারণত ছোট এবং দ্রুত কোড উত্পন্ন করে তবে প্ল্যাটফর্ম নির্ভর সীমাবদ্ধতা থাকবে যেমন বিশ্বব্যাপী দৃশ্যমান চিহ্নগুলির সংখ্যা বা কোডের আকার। লিঙ্কারটি আপনাকে বলবে যে আপনি যখন ভাগ করা লাইব্রেরি তৈরি করবেন তখন এটি মানানসই কিনা। সন্দেহ হলে আমি নির্বাচন করি -fPIC
, কারণ এটি সর্বদা কার্যকর হয়।
-fPIC
এবং -fpic
একই কোড তৈরি হয়েছে বলে মনে হচ্ছে। দেখে মনে হচ্ছে তারা কেবল m68k, PowerPC এবং SPARC এ আলাদা কোড তৈরি করে।
থেকে জিসিসি ম্যানুয়েল পৃষ্ঠা :
ভাগ করা লাইব্রেরিগুলির জন্য কোড উত্পন্ন করার সময়, -fpic এমএসএমএল-ডেটা এবং -fPIC এমপ্লের-ডেটা বোঝায়।
কোথায়:
-msmall-data
-mlarge-data
When -mexplicit-relocs is in effect, static data is accessed via
gp-relative relocations. When -msmall-data is used, objects 8
bytes long or smaller are placed in a small data area (the
".sdata" and ".sbss" sections) and are accessed via 16-bit
relocations off of the $gp register. This limits the size of the
small data area to 64KB, but allows the variables to be directly
accessed via a single instruction.
The default is -mlarge-data. With this option the data area is
limited to just below 2GB. Programs that require more than 2GB
of data must use "malloc" or "mmap" to allocate the data in the
heap instead of in the program's data segment.
When generating code for shared libraries, -fpic implies
-msmall-data and -fPIC implies -mlarge-data.
man gcc
তবে এর মধ্যেinfo gcc
আরও ডকুমেন্টেশন রয়েছে।