ورود

View Full Version : سوال: کتابخانه GCC



r.khodabakhshi
جمعه 12 اسفند 1390, 14:37 عصر
سلام

کسی میتونه منو در مورد کتابخانه gcc راهنمایی کنه؟
من بیشتر توی لینکشون مشکل دارم،یعنی نمیدونم چطوری باید اینکارو بکنم:متفکر:

ممنون،فقط یه کم سریع

pswin.pooya
جمعه 12 اسفند 1390, 23:14 عصر
کسی میتونه منو در مورد کتابخانه gcc راهنمایی کنه؟
gcc کامپایلر هست نه کتابخونه


من بیشتر توی لینکشون مشکل دارم،یعنی نمیدونم چطوری باید اینکارو بکنم:متفکر:

مثلا برای لینک OpenGL:

gcc main -lGL

میتونی کتابخونه های لینک شده به یه برنامه رو هم با دستور ldd ببینی:

ldd ./a.out

r.khodabakhshi
شنبه 13 اسفند 1390, 00:14 صبح
ببخشیدا ولی میدونم که کامپایلره!:عصبانی:
منظورم این بود که برای کتابخانه های static , share چیکار باید کرد مثلا ده تا فایل .o رو چطوری به هم لینک کنم....آخه خطای کتابخانه میده...
مثلا connot access : lib/lib.c.so.? : no such file or directory

pswin.pooya
شنبه 13 اسفند 1390, 00:59 صبح
ببخشیدا ولی میدونم که کامپایلره!:عصبانی:
منظورم این بود که برای کتابخانه های static , share چیکار باید کرد مثلا ده تا فایل .o رو چطوری به هم لینک کنم....آخه خطای کتابخانه میده...
مثلا connot access : lib/lib.c.so.? : no such file or directory سلام
حله چرا ناراحت میشی؟

مساله اول در مورد فایلها هست. لازم نیست از اسم فایل استفاده بکنید. مثلا برای /usr/lib/libGL.so کافیه از lGL استفاده بکنید.

مورد دوم آدرسها هست. باید آدرسی رو کتابخونه قرار داره تو مسیرهای پیش فرض باشه یا اینکه با سوئیچ -L اون رو به کامپایلر معرفی کنید:

gcc main.c -L. -ltest

مورد سوم توع کتابخونه هست. بطور پیش فرض shared انتخاب میشه اما اگر بخوایین می تونین با سوئیچ -static نوع استاتیک رو انتخاب کنید.


مثلا ده تا فایل .o رو چطوری به هم لینک کنم.
میتونید از ld استفاده بکنید. البته خود gcc هم با فراخوانی ld اینکار رو انجام میده:


gcc main.o -ltest

r.khodabakhshi
شنبه 13 اسفند 1390, 09:40 صبح
ممنون دوست عزیز:چشمک:

حالا اگه خودم مثلا با یه کامپایلر دیگه بخام فایل کامپایل کنم تو ادرس home/r/:cc -ms فلان؛کتابخانه های همین کامپایلرم توی پوشه lib مسیر خودش باشه
چطوری این کتابخانه ها رو که اکثرا static هستند رو صدا بزنم.منظورم اینه gcc نه با یک کامپایلر جدا که خودش همه چیز داره....:متفکر:

هر کاری میکنم نمیشه...این کارو کردم ولی نشد
cc -c 1.c 2.c 3.c 4.c -L\home\r\lib -lc
cc -o test 1.o 2.o 3.o 4.o -lc
خطاداد.
connot access:/lib/libc.so.? No such file or directory:متعجب:

میدونی مشکل من کجاست!من اومدم آدرس کامپایلرو عوض کردم و نمیدونم چطوری بهش حالی کنم که بابا جان برو سراغ کتابخونه های کامپایلر خودت...:گیج:

pswin.pooya
شنبه 13 اسفند 1390, 12:21 عصر
connot access:/lib/libc.so.? No such file or directory:متعجب:

سعی کن آدرسها رو داخل آکولاد بذاری و آخرش هم / رو اضافه کنی :


gcc -L"/lib"/

و مجوزهای دسترسی رو هم چک کن. میتونی از su استفاده بکنی. و داخل دبین و اونتو sudo -s

r.khodabakhshi
شنبه 13 اسفند 1390, 17:05 عصر
معذرت میخام ولی سوال آخرمه....

بازم نشد...:خجالت:

آقا من یه برنامه دارم که میخام با کامپایلر خودم اجراش کنم(gcc و بی خیال)،اصلا نیازی به کتابخونه هاش داره یا از همون کتابخانه های توی /lib یا /usr/lib استفاده میکنه؟

به نظر خودم باید بره سراغ کتابخانه های خودش ولی نمیره....:گریه:

یکی از دوستام گفت این بسته رو نصب کن شاید بشه که اونم نشد.....:عصبانی++:

apt-get install libklibc-dev

r.khodabakhshi
یک شنبه 14 اسفند 1390, 16:28 عصر
تشکر:تشویق:

pswin.pooya
چهارشنبه 17 اسفند 1390, 16:39 عصر
تشکر:تشویق:
چه شكلي؟ دكمه تشكر براي همين كاره