# سیستم عامل ها > سیستم عامل های آزاد > توسعه‌ی لینوکس و نرم افزارهای آزاد >  سرفایل Conio.h در GCC و ++G

## Sundown

درود

نمیدونم سوالم رو جای خوبی گذاشتم یا نه ( اگر نه همین جا عذر میخوام )

فکر میکنم هدر Conio.h در GCC وجود ندارد. ظاهرا این هدر مخصوص محیط های بورلند هست.( فکر میکنم ) اما با توجه به توابع مهمی که توی این هدر هست چه جایگزینی برای آن در لینوکس وجود دارد ؟
اگر سرفایل دیگری موجود است آن را از کجا دانلود و در کدام قسمت لینوکس قرار دهم ؟
آیا امکان دارد هدر Conio.h که در ویندوز از آن استفاده میکنم را به لینوکس بیارم و در آنجا از آن استفاده کنم ؟ اگر بلی به کدام قسمت از لینوکس آن را اضافه کنم ؟
در مورد هدر های دیگر مانند Dos.h هم در لینوکس توضیحی بدهید

با سپاس

----------


## حامد مصافی

سلام

conio جز سرآیند های استاندارد ANSI نیست. لذا در Linux وجود ندارد. همانطور که حدس زدید این هدر فقط در محصولات بورلند وجود دارد. اگر منظور شما از توابع مهم توابعی مانند توابع کار با کرسر است از ncurses.h یا curses.h استفاده کنید (اطلاعات بیشتر).
البته انتخاب های دیگری مانند libconio و Linux-conio را نیز می توانید تست کنید.
بدیهیست که dos.h نیز در لینوکس وجود ندارد اما اگر نیازتان را بنویسید شاید بتوان جایگزین دیگری معرفی کرد.

----------


## Sundown

خیلی ممنون
این هدر ها رو بعد از دانلود کجا اضافه کنم ؟
آیا توابع موجود در این هدر ها دقیقا مانند همان توابع موجود در هدر های بورلند هست؟
مثلا تابع Dalay که در Dos.h هست یا توابع دیگه که خیلی کاربرد دارند ( در این هدر ) برای آنها چه راهی را پیشنهاد میدید ؟
آیا امکان دارد هدر هایی که در ویندوز از آن استفاده میکنم را به لینوکس بیارم و در آنجا از آن استفاده کنم ؟ اگر بلی به کدام قسمت از لینوکس آن را اضافه کنم ؟
بسیار ممنون

----------


## حامد مصافی

فایل سر آیند را باید به یکی از مسیر های زیر اضافه کنید
/usr/local/include, /opt/include, /usr/include

در صورتی که فایل شما همراه با یک کتابخانه ارائه می شود فایل Lib آن را به یکی از مسیر های زیر اضافه کنید

/usr/local/lib, /opt/lib, /usr/libدر هدر time.h تابعی به نام delay_sec وجود دارد. به تعداد ثانیه های ارسال شده وقفه ایجاد می کند:
delay_sec(5); //delay for 5 seconds

همچنین شما می توانید هدر هایی را که در ویندوز استفاده می کنید به یکی از مسیر های include که ذکر گشت اضافه کرده و از آنها استفاده کنید.

----------


## Sundown

مرسی از پاسختان
اما وقتی فایل هایی که خودتان لینکشون رو گذاشتید رو به مسیری که گفتید کپی کردم و توسط کامپایلر Gcc خواستم برنامه رو کامپایل کنم به یک سری از ایرادات که درون فایل هدر هست اشاره میکنه !
تقریبا 20 تا مورد ایراد از فایل هدر ( از کدهای درون خود فایل ) میگیره.
وقتی هم هدر های ویندوزی رو به مسیری که گفتید میبرم همون ایرادات به اضافه چندین ( نزدیک 10 تا ) ایراد دیگه هم میگیره.
نمیدونم ایراد کار کجاست. اگر لازم هست بگید تا عکس از ایراداتی که کامپایلر میگه رو بذارم.
در ضمن کدی که من استفاده میکنم اینه. پس قطعا ایراد از کد من نیست. مشکل درون فایل های هدر هست.

#include <stdio.h>
#include <conio.h>

int main()
{
printf("Hello GCC";
}


حتی میبینید که از توابع درون هدر هم استفاده نکردم ولی باز هم ایراد میگیره.
لطفا راهنمایی کنید

----------


## حامد مصافی

اگر از Linux-conio استفاده می کنید باید پارامتر های کامپایل -lncurses  را اضافه کنید.
و اگر تصمیم دارید از libconio استفاده کنید ابتدا باید خود libconio را کامپایل کرده و سپس فایل lib و h آن را مطابق مسیر های پست پیش در سیستم کپی کرده و پارامتر -lconio را در پارامتر های خط فرمان اضافه کنید.

----------


## Sundown

> باید پارامتر های کامپایل -lncurses  را اضافه کنید.





> و پارامتر -lconio را در پارامتر های خط فرمان اضافه کنید.


میشه توضیح بدید چگونه این کار رو کنم ؟
یعنی زمانی که میخوام کامپایلشون کنم باید این پارامتر ها رو اضافه کنم ؟
ممنون از پیگیریتون

----------


## حامد مصافی

g++ myfile.cpp -lconio -o outputfile
پارامتر هایی که با -l شروع می شوند به یک فایل مشترک در فولدر lib اشاره می کنند. اگر به جای -l عبارت lib را جایگزین کنید ابتدای نام فایل در فولدر مذکور به دست خواهد آمد:

-lconio  --> libconio
libconio.so
libconio.so.1
libconio.so.1.0
...

----------


## Sundown

آقا خیلی ممنون از توضیح کامل و دقیقتون :تشویق: 
ببخشید این پست رو فقط به خاطر تشکر زدم. حیفم اومد برای تشکر فقط به کلیک روی دکمه تشکر اکتفا کنم
ممنون

----------


## marzieh64

سلام
من میخوام از تابع sqrt که در math.h تعریف شده استفاده کنم اما با اینکه math.h را گذاشتم با اینحال پیغام میده که sqrt  رو نمیشناسه.چیکار باید بکنم؟مرسی

----------


## Open-Source

> سلام
> من میخوام از تابع sqrt که در math.h تعریف شده استفاده کنم اما با اینکه math.h را گذاشتم با اینحال پیغام میده که sqrt  رو نمیشناسه.چیکار باید بکنم؟مرسی


توابع هدرهایی مثل stdio.h بصورت پیش فرض درون glibc قرار داده شدن.
ولی بعضی توابع مثل توابع ریاضی (که درون هدر math.h هستند) ، درون glibc قرار ندارند و باید اونا رو هنگام کامپایل لینک کنی. بصورت زیر: (باستفاده از پارامتر lm-)
gcc main.c -lm

----------


## marzieh64

ببخشید میشه دقیقا بگید باید چی بنویسم.فرض کنید اسم فایلم test است و می خوام از math.h استفاده کنم.میشه بگید دستوری که گفتید رو باید چجوری بنویسم و اینکه آیا باید قبلا چیزی را جایی گذاشته باشم یا نه؟شرمنده
در ضمن از gedit استفاده  میکنم.

----------


## marzieh64

خودم فهمیدم.اصلا نیازی به کاری نیست.خودش math.h رو میشناسه!

----------

