`-Fpic` এবং` -fPIC` gcc পরামিতিগুলির মধ্যে পার্থক্য কী?


99

আমি ইতিমধ্যে gccম্যানপেজটি পড়েছি তবে এখনও -fpicএবং এর মধ্যে পার্থক্য বুঝতে পারি না -fPIC। কেউ কি খুব সাধারণ ও সুস্পষ্ট উপায়ে এটি ব্যাখ্যা করতে পারেন?


সম্পর্কিত প্রশ্নগুলি:


4
হ্যাঁ উত্তরটি এতে নেই man gccতবে এর মধ্যে info gccআরও ডকুমেন্টেশন রয়েছে।
ব্যবহারকারী 2284570

উত্তর:


114

http://tldp.org/HOWTO/Program-Library-HOWTO/ Shared-libraries.html

অবস্থান -fPICবা -fpicস্বাধীন অবস্থানের অবস্থান তৈরি করতে ব্যবহার করুন । অবস্থান নির্ধারণের জন্য স্বাধীন কোডটি ব্যবহার করতে হবে -fPICবা -fpicতৈরি করতে হবে target -fPICপছন্দ সবসময় কাজ করে, কিন্তু চেয়ে বড় কোড তৈরি করতে পারে -fpic(এই যে মাংসখণ্ডের, একটি বৃহত্তর ক্ষেত্রে তাই এটি কোডের বৃহত্তর পরিমাণে উত্পাদন পারে মনে রাখা mnenomic)। ব্যবহারের -fpicবিকল্পটি সাধারণত ছোট এবং দ্রুত কোড উত্পন্ন করে তবে প্ল্যাটফর্ম নির্ভর সীমাবদ্ধতা থাকবে যেমন বিশ্বব্যাপী দৃশ্যমান চিহ্নগুলির সংখ্যা বা কোডের আকার। লিঙ্কারটি আপনাকে বলবে যে আপনি যখন ভাগ করা লাইব্রেরি তৈরি করবেন তখন এটি মানানসই কিনা। সন্দেহ হলে আমি নির্বাচন করি -fPIC, কারণ এটি সর্বদা কার্যকর হয়।


35
আরো কি আছে: আমি একটু পরীক্ষা এখানে করেনি (, x86_64 প্ল্যাটফর্মে), -fPICএবং -fpicএকই কোড তৈরি হয়েছে বলে মনে হচ্ছে। দেখে মনে হচ্ছে তারা কেবল m68k, PowerPC এবং SPARC এ আলাদা কোড তৈরি করে।
ডেনিলসন সা মিয়া

4
কিছু লক্ষ্যের জন্য এক উপায়ে সংকলিত জিসিসির একটি সংস্করণ সহ একক পরীক্ষা। সেই ফলাফলটি লবণের এক দানা দিয়ে নিন, প্রত্যাশা করুন যে ফলাফলটি সময়ের সাথে সাথে বিশেষত জিসিসির মতো কোনও সরঞ্জামের মাধ্যমে পরিবর্তিত হবে।
old_timer

আমি কি একটি প্রশ্ন করতে পারি; কী বিশ্বব্যাপী প্রোফাইল চিহ্ন মানে কি?
Ван

18

থেকে জিসিসি ম্যানুয়েল পৃষ্ঠা :

ভাগ করা লাইব্রেরিগুলির জন্য কোড উত্পন্ন করার সময়, -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.

4
লিঙ্কযুক্ত ম্যানুয়াল পৃষ্ঠা আপডেট করা হয়েছে, চেক আউট মনে রাখবেন।
youfu
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.