Hi all,

Hope you are all doing great!

My problem is - I am using Elementary OS (Loki) which is based on ubuntu 16.04 and CodeBlocks 13.12 with GNU GCC compiler. Recently, I tried to use getch(), getche() functions (which were in conio.h header file as far as i know) in my coding (C programming language). But I got error messages - what i understood that GNU GCC compiler is not recognizing conio.h header file or getch(), getche() functions.

My questions are -

  1. Is conio.h header file not included in Linux GNU GCC compiler ?
  2. Is there any alternate header file in GNU GCC compiler which include getch(), getche() functions?
  3. Or do i have to use or install another compiler in my system?

Thanks in advance.

Nazmul Hossain

asked 08 Feb '17, 13:01

nazmulwanted's gravatar image



BTW what is the point of writing english in programabad? You could have used stackoverflow instead!

(08 Feb '17, 18:16) Ashfaqur Rahman

sorry. I didn't install bangla writing software in my elementary OS system. That's why I wrote in english. :)

(08 Feb '17, 20:23) nazmulwanted

Oh! That's a valid reason. FYI "Provat" layout is by default available in any GNU/Linux systems AFAIK. You can use that if you wish.

(08 Feb '17, 21:16) Ashfaqur Rahman

  1. conio.h isn't available in the GNU/Linux systems. Even it isn't officially available for win32 operating systems. It was used in the old MS-DOS system for text based interfaces. I can provide you the header file; once I downloaded it from the internet and it is still in my dropbox; It won't work though as it depends on MINGW which is a project to avail a tiny GNU system in the windows environment.
  2. Yes there are many alternatives. From third party libraries to native GNU/Linux library. Such one is ncurses. Which have similar functions like getch(). And here is a third party library.
  3. No you don't have to.
permanent link

answered 08 Feb '17, 18:14

Ashfaqur%20Rahman's gravatar image

Ashfaqur Rahman

আমি ncurses library intall করলাম এবং আমার একটি test C program এ ncurses.h include করলাম । কিন্ত codeblocks এ code টি build করলে ২টি ভুল দেখায় - undefined reference 'stdscr' আর undefined reference 'wgetch' । এর কোন সমাধান আছে কি? আমি stackOverflow থেকে ঘাটাঘাটি করে যা পেয়েছি সেটি হল compiler seetings এর linker settings গিয়ে libncurses file দেখিয়ে দিতে হবে। সেটা করতে গিয়ে দেখলাম program build হচ্ছে ঠিকই কিন্ত getch এর input নিচ্ছে না, উল্টো -1 return করছে ।

(11 Feb '17, 11:24) nazmulwanted

সবাইকে স্বাগতম ! আশা করি সবাই ভালো আছেন।

গুগল আর stackoverflow এর সাহায্য নিয়ে codeblocks, GNU GCC compiler, ncurses library সম্পর্কিত কিছু সমাধান পেয়েছি।

  1. প্রথম কাজ ছিল getch()/getche() function এর জন্য ncurses library install করা। নিচের command এর মাধ্যমে সেটি করলাম।
    sudo apt install libncurses-dev
  2. এখন system এ ncurses.h নামের header file টি ব্যবহার করতে পারব কিন্তু সেইজন্য যে source code fileটি compile করতে হবে সেটার সাথে ncurses link করতে হবে। ( তা না করলে code compile হচ্ছিল না ) Linux command line এ সেটির জন্য নিচের command টি লিখতে হয়-
    gcc -o mycodex mycodefile.c -lncurses

  3. এখানে উদাহরণস্বরূপ আমার source code file এর নাম mycodefile.c , gcc এর মাধ্যমে compile করে -o option দিয়ে mycodex নামে executable file টি save করা হয়েছে আর -lncurses এই commandটির মাধ্যমে ncurses library symbolic link করা হলো ।
  4. উপরোক্ত ধাপের কাজটি যদি codeblocks 13.12 (in ubuntu 16.04) তে করতে চাই তাহলে settings > compiler option এ যেতে হবে। তারপর click search directories tab > compiler। তারপর click add । নিচের ছবির মত আসবে-
    alt text
    সেখানে library location দিতে হবে (আমার ক্ষেত্রে সেটি ছিল /usr/include । )
    alt text
    এরপর তার পাশের linker tab এ একইভাবে library location দিতে হবে (আমার ক্ষেত্রে সেটি ছিল /usr/lib ।)
    alt text
    এবং আরেকটি কাজ করতে হবে , সেটি হচ্ছে compiler settings tab এ -pthread আর -std=c11 লিখতে হবে নিচের ছবির মত -
    alt text
    শেষে linker settings tab এ গিয়ে other linker options এ -lncurses লিখতে হবে নিচের ছবির মত -alt text
  5. যদি এখন আপনার C program coding এ ncurses.h include করা থাকে তাহলে আর error message দেখানোর কথা নয় ।

আশা করি যারা linux এ codeclocks এ এই ধরনের সমস্যার সম্মুখীন হয়েছেন তাদের কাজে আসবে। ধন্যবাদ ।

permanent link

answered 13 Feb '17, 15:18

nazmulwanted's gravatar image


Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:


question asked: 08 Feb '17, 13:01

question was seen: 921 times

last updated: 13 Feb '17, 15:18