Як я можу використовувати graphics.h в Ubuntu?


19

Чи є компілятор на базі Linux, який підтримує graphics.hбібліотеку? Я хочу реалізувати графічні програми, тому, будь ласка, будь ласка, повідомте мені, чи є таке програмне забезпечення.

Якщо ні, то як я можу ним користуватися?


Що саме потрібно знати? Укладачі повинні знайти всі заголовки, якщо ви помістите правильні .. umm ... слухачі у вашому вихідному файлі.
Брайам

@Braiam Компілятор не знайде магічного файлу заголовка лише тому, що ви його включили. По-перше, зрозуміло, що файл потрібно встановити у вашій системі (зазвичай файли заголовків постачаються з *-devпакетами на дистрибутивах Linux) - компілятор не завантажує його для вас. По-друге, цей заголовочний файл повинен бути або в якомусь стандартному місці, де компілятор буде шукати його (наприклад, /usr/include), або інше це місце має бути вказано -Iв командному рядку (для gccабо g++). Крім того, вам зазвичай потрібні вкладки для виконання етапу зв’язку (за винятком
шаблонів

@MalteSkoruppa добре, але що для цього потрібно використовувати? Покладіть це в свої заголовки, ні?
Брайам

@Braiam Помилка ... що ти питаєш? Подивіться, питання ОП саме в цьому: що мені потрібно зробити, щоб мати можливість використовувати graphic.hбібліотеку на Ubuntu? Це абсолютно зрозуміло. Відповідна відповідь пояснить, які пакети потрібні та як їх встановити (як це є в існуючій відповіді), та, можливо, які параметри потрібні в командному рядку під час компіляції.
Malte Skoruppa

@MalteSkoruppa ти читаєш тіло?
Брайам

Відповіді:


31

Для графічного програмування за допомогою Ubuntu доступно кілька варіантів.

Використання SDL

Якщо ви хочете використовувати graphics.hна платформі Ubuntu, вам потрібно скомпілювати та встановити libgraph. Це реалізація графічної API турбо c в Linux з використанням SDL.

Він не дуже потужний і підходить для якості виробництва, але він простий і простий у використанні для навчальних цілей.

Ви можете завантажити його звідси .

  1. Спочатку додайте репозиторій Universe (оскільки деякі необхідні пакети недоступні в головному сховищі):

    sudo add-apt-repository universe
    sudo apt-get update
  2. По-друге, встановіть необхідні збірки та деякі додаткові пакети:

    • Для версій до 18.04:

      sudo apt-get install libsdl-image1.2 libsdl-image1.2-dev guile-1.8 \
      guile-1.8-dev libsdl1.2debian libart-2.0-dev libaudiofile-dev \
      libesd0-dev libdirectfb-dev libdirectfb-extra libfreetype6-dev \
      libxext-dev x11proto-xext-dev libfreetype6 libaa1 libaa1-dev \
      libslang2-dev libasound2 libasound2-dev build-essential
    • Для 18.04 : з Ubuntu 18.04 guile-2.0працює і libesd0-devзастаріло. Для цього вам потрібно додати сховища xenialв sources.list.

      sudo nano /etc/apt/sources.list

      Додайте ці рядки:

      deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe
      deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe

      Біжи sudo apt-get update. Потім встановіть пакети, використовуючи:

      sudo apt-get install libsdl-image1.2 libsdl-image1.2-dev guile-2.0 \
      guile-2.0-dev libsdl1.2debian libart-2.0-dev libaudiofile-dev \
      libesd0-dev libdirectfb-dev libdirectfb-extra libfreetype6-dev \
      libxext-dev x11proto-xext-dev libfreetype6 libaa1 libaa1-dev \
      libslang2-dev libasound2 libasound2-dev
  3. Тепер витягніть завантажений libgraph-1.0.2.tar.gzфайл.

  4. Перейдіть до витягнутої папки та запустіть таку команду:

    ./configure
    make
    sudo make install
    sudo cp /usr/local/lib/libgraph.* /usr/lib
  5. Тепер ви можете використовувати #include<graphics.h>в Ubuntu та наступний рядок у вашій програмі:

    int gd=DETECT,gm; 
    initgraph(&gd,&gm,NULL);

Ось зразок програми з використанням graphics.h:

/*  demo.c */
#include <graphics.h>

int main()
{
   int gd = DETECT,gm,left=100,top=100,right=200,bottom=200,x= 300,y=150,radius=50;
   initgraph(&gd,&gm,NULL);
   rectangle(left, top, right, bottom);
   circle(x, y, radius);
   bar(left + 300, top, right + 300, bottom);
   line(left - 10, top + 150, left + 410, top + 150);
   ellipse(x, y + 200, 0, 360, 100, 50);
   outtextxy(left + 100, top + 325, "C Graphics Program");

   delay(5000);
   closegraph();
   return 0;
}
  • Для його складання використовуйте

    gcc demo.c -o demo -lgraph
  • Для запуску типу

    ./demo

Вихід демонстрації 1

Використання OpenGL (через GLUT)

Хоча OpenGL в основному створений для 3D програмування, малювання 2D фігур дає основні контури та вступ до OpenGL та дає уявлення про те, як почати малювати об’єкти в OpenGL.

  • Щоб встановити GLUT, відкрийте термінал і введіть sudo apt-get install freeglut3-dev.
  • Ось проста графічна програма з використанням GLUT
/*  demo.c */
#include <GL/gl.h>
#include <GL/glut.h>
#include <GL/glu.h>

void setup() {   glClearColor(1.0f, 1.0f, 1.0f, 1.0f); }

void display()
   {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      glColor3f(0.0f, 0.0f, 0.0f);
      glRectf(-0.75f,0.75f, 0.75f, -0.75f);
      glutSwapBuffers();
   }

int main(int argc, char *argv[])
  {
     glutInit(&argc, argv);
     glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
     glutInitWindowSize(800,600);
     glutCreateWindow("Hello World");

     setup();
     glutDisplayFunc(display);
     glutMainLoop();
     return 0;
  }
  • Скомпілюйте його за допомогою

    gcc demo.c -o demo -lglut -lGL

  • Запустити його за допомогою

    ./demo

Вихід демонстрації 2


1
Я використовую SDL, але я зробив усі речі, як було сказано, і вкладіть лібграф, але після запуску програми він зупиняється і раптово закінчується помилкою [xcb] Невідомий номер послідовності під час обробки черги
Luzan Baral

яку версію Ubuntu ви використовуєте?
g_p

я використовую ubuntu 14.04
Luzan Baral

@LuzanBaral, Здається, проблема з GTK, але ви все одно можете запустити програму.
g_p

1
Для помилок , які долають при установці libgraph з використанням SDL см askubuntu.com/a/995265/719469 і askubuntu.com/a/717262/719469 (заощадить багато часу, кажучи це з особистого досвіду: P)
Kewal Шах

2

Якщо ви хочете використовувати graphics.h в ubuntu або будь-якому іншому дистрибутиві Linux, то я віддаю перевагу libxbgi. Він може виконати майже всі речі, які ви очікуєте від graphics.h для Windows. Завантажити його можна звідси: http://libxbgi.sourceforge.net/

Інакше, якщо ви хочете зробити якісь графіки високого класу, то ви там для SDL (що переважно для програмування відеоігор) та OpenGL (що стосується 3D графіки). Також можна використовувати суміш двох. Одним із прикладів є гра в брикело (написання може бути неправильним).

ЧАСТИНА ГРАФІКА ПРОГРАММУВАННЯ !!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.