امبدد لینوکس – قسمت دوازدهم – کار با crosstool-NG - زنجیره‌ای از ابزارهای لازم برای ساختن همه چیز (بخش هشتم)

blog
۱۴۰۰-۰۱-۱۸
4 دقیقه

با قسمت دوازدهم از دوره ورود به دنیای امبدد لینوکس که دوره مقدماتی آموزش امبدد لینوکس می باشد همراه ما باشید.

(فصل دوم – بخش هشتم)

خوب! توی قسمت قبل با crosstool-NG و menuconfig آشنا شدیم و همین طور تونستیم برای “رسپبری پای سه بی پلاس – Raspberry Pi 3 B Plus” و “لیچی پای نانو – Lichee Pi Nano” هم تولچین ساختیم. توی این قسمت میخوایم اجزا تولچین رو بررسی کنیم و کمی بیشتر با ابزار های داخل اون آشنا بشیم.

 

در قسمت‌های قبلی آموزش، مسیر حرکت و فصل‌های پیش رو، بسیاری از مفاهیم مورد نیاز و سؤال‌ها و ابهامات شما در این دوره پاسخ داده شده است.
پس اگر اولین بار است که این آموزش را شروع می‌کنید، با توجه به سلسله مراتب پیش بینی شده برای آموزش‌ها، بهتر است از جلسه اول شروع کنید!
جلسه اول آموزش، ورود به دنیای امبدد لینوکس
همه آموزش‌های امبدد لینوکس

 

آناتومی تولچین

سلامی دوباره!
الآن که من دارم قسمت جدید رو می‌نویسم عید هست پس سال نوتون مبارک و امیدوارم در سال جدید مهارتی جدید به توانایی‌هاتون اضافه بشه ?
آخرین جمله قبلی‌مون این بود «خوب الان همه چیز رو برای ساختن همه چیز دارید!» علاوه بر همه چیز زمان زیادی هم داشتین تقریبا شش ماه!
امیدوارم که یک کارهایی کرده باشین ?
بیاید یه سری اطلاعات از اجزا تولچین که ساختیم کسب کنیم.
اول مسیر تولچینی که ساختیم رو به فایل at00exports.sh اضافه می‌کنیم:

 

حالا فایل at00exports.sh رو source می‌کنیم:

حالا از کامپایلرمون ورژنش رو می‌پرسیم :

و با این دستور ازش تنظیماتش رو می‌پرسیم:

 

از این همه اطلاعات اینا بیشتر بدرد میخورن:

به جز خط اول بقیه رو فکر نکنم توضیح خاصی بخواد.

 

Sysroot، کتابخانه و سرآیندها

واسه sysroot معادل فارسی سراغ نداشتم ?
Sysroot درحقیقت یه دایرکتوری هست با یه سری زیردایرکتوری‌ها که توشون کتابخانه‌ها و فایل‌های سرآیند و فایل‌های تنظیماتی هست. Sysroot رو می‌شه در زمان کامپایل برای کامپایلرمون با آرگومان –sysroot ست کنیم.
محتویات sysroot معمولا این‌هاست:

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

تولچین به جز کامپایلر دیگه چیا داره؟

خیلی چیزا!
برای شناخت اجزا تولچین کافیه یه نگاه به محتویات فولدر bin بندازین؟ (کدوم bin؟ همونی که توش کامپایلر هست.)

 

ابزار های تولچین گنو

برنامه های گنو

اجزا تولچین

 

اجزای کتابخانه

کتابخانه C یک کتابخانه نیست و در حقیقت از چهارتا بخش تشکیل شده که باهم APIی POSIX رو پیاده سازی می‌کنن:

libc: The main C library that contains the well-known POSIX functions such as printf , open , close , read , write , and so on
libm: Contains maths functions such as cos , exp , and log
libpthread: Contains all the POSIX thread functions with names beginning with pthread_
librt: Has the real-time extensions to POSIX, including shared memory and asynchronous I/O

از این چهار تا کتابخانه فقط libc به صورت پیش فرض با کامپایلر لینک هست بقیه رو در صورتی که توی برنامه ازشون استفاده کرده باشیم باید به کامپایلرمون بگیم، چه جوری؟ اینجوری که –l میذاریم و بدون اسم کتابخانه رو که lib ازش حذف شده در ادامه‌ش مینویسم، البته این قانون معمولا در مورد بقیه کتابخانه‌ها هم صدق می‌کنه. مثلا اگه از توابع ریاضیاتی استفاده کرده باشیم در برنامه‌مون این جوری کامپایلش می‌کنیم:

 

سوال: یه وقتایی یه برنامه‌هایی هست که هی میگه این کتابخونه نیست اون یکی نیست، این ورژنش نمیخونه و … چه کنیم؟
جواب با دو تا دستور اول ببینید چه کتابخونه‌هایی با چه ورژن‌هایی میخواد و بعد برید دنبال یافتنشون و گذاشتنشون سرجاش!
مثلا این برنامه رو در نظر بگیرید:

 

که این جوری کامپایلش میکنم:

 

حالا خروجی این دو تا دستور رو ببنید:

 

سوال: از کجا این کتابخونه‌ها رو پیدا کنیم؟
جواب: از همون سیسروت شروع کنید!

 

پایان بخش هشتم از فصل دوم

توصیه میکنم یه سری هم به نظرات این پایین بندازید، نظرات رو بخونید و اگر شما هم نظری دارید، مشارکت کنید! ?

همه آموزش های امبدد لینوکس

اطلاعات
5
0
لینک و اشتراک
profile

Rich_Dad (آنی روت)

متخصص الکترونیک

طراحی، بهینه سازی و تولید محصولات الکترونیکی، درحوزه های تجاری،صنعتی و تجهیزات پزشکی، مجری سیستم های امبدد لینوکس *( مهندسی-بازرگانی آنی روت https://aniroot.com )

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

profile
محمد علی قربانی گفت :
۱۴۰۰-۰۲-۱۵ ۲۰:۴۶

درباره sysroot یکی از بزرگان لینوکس حرف جالبی زد یبار (راب لندلی)‌: حدود ۶۰ درصد از کراس کامپایل، هنر چگونه دروغ گفتن به نرم افزار بیلد کننده هست، درباره اینکه path هدر ها و lib ها کجاست!!
یعنی استفاده sysroot توی host یجوری شبیه سازی rootfs در مواقع نیاز هست بطوری که در مرحله بیلد هر چیزی از target که نیاز هست توی sysroot قرار گرفته.

profile
Rich_Dad گفت :
۱۴۰۰-۰۳-۱۲ ۱۱:۴۰

سلام بر جناب مهندس قربانی عزیز
بله دقیقاً همین هست که فرمودید ?

profile
حامد طاهری گفت :
۱۴۰۰-۰۲-۰۳ ۱۶:۵۷

سلام، ممنونم از مطلب عالی.

سوالی که دارم اینکه برد Lichee Pi Nano توانایی اجرای برنامه ای که با کیوت نوشتیم و روی بورد دیپلوی کردیم را دارد؟ منظورم برنامه گرافیکی که امکان کار با LCD و تاچ را داشته باشد و آیا سرعت اجرا خوب خواهد بود؟ و سال دیگه اینکه همه فایلها سیستم عامل و برنامه Qt روی همان فلش روی بورد جا میشود یا حتما باید از SD-Card استفاده کرد؟

profile
Rich_Dad گفت :
۱۴۰۰-۰۲-۰۶ ۱۶:۱۰

سلام جناب حامد طاهری و زئوس عزیز

تشکر از زئوس عزیز برای پاسخ دهی،
دقیقا همون طور که زئوس فرمودن هم بله هم نه!
برای گرافیک با Qt سراغ پردازنده های قوی تر بروید بهتر است

profile
zeus گفت :
۱۴۰۰-۰۲-۰۵ ۰۹:۴۶

جواب سوال شما هم بله است هم خیر 🙂
باید به محدودیت رم موجود روی پردازنده دقت کنید معمولا برنامه های نوشته شده با qt رم بالایی نیاز دارند – پس اولین محدودیت محدودیت رم است
در مورد استفاده از sd کارت باید بگم احتمال این که نورفلش بتونه کتابخانه مورد نیاز رو درخودش جا بده کمه ولی باز مطمئن نیستم و تا تست نکنید نخواهید دانست.

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله