возможно ли иметь приложение с графическим интерфейсом C / C ++ на чистом сервере Linux?

Я очень разочарован своим школьным Linux-сервером, когда делаю на нем домашнюю работу. Причина в том, что моя домашняя работа требует сделать приложение с графическим интерфейсом.

Все инструменты, которые у меня есть, это: - ssh с моей локальной машины на школьную машину - gcc/g++ на моей школьной машине

Я думал и пробовал разные решения в течение недели. Я до сих пор не могу понять, как добавить графический интерфейс в свое приложение.

Вот некоторые решения, которые я пробовал: - Установите графическую библиотеку (sdl, ncurses...), но школьный компьютер не позволяет установить, потому что я не являюсь пользователем root - Попробуйте скомпилировать с /X11/ для создания приложения X-GUI . Затем запускаем его через ssh (туннелирование). Это также не работает, потому что на школьном компьютере нет файла заголовков, расположенного в X11.

Так что я могу сделать? У кого-нибудь есть предложение? Я буду благодарить вас миллион раз, если вы могли бы помочь для решения.

Большое спасибо. цубаса


person Community    schedule 09.12.2009    source источник


Ответы (5)


Должна быть возможность установить большинство вещей, таких как ncurses или даже X11, в пространстве пользователя (в вашем домашнем каталоге), если вы устанавливаете их из исходного кода. С пакетом Gnu вы просто используете --prefix= в качестве аргумента для настройки, например:

./configure --prefix=/name/of/directory/to/install/into 

Я не уверен в других пакетах.

person Community    schedule 09.12.2009
comment
Я попробовал это, но есть ошибка: apt-get install ncurses E: Не удалось открыть файл блокировки /var/lib/dpkg/lock - открыть (13 Отказано в доступе) E: Невозможно заблокировать каталог администрирования (/var/lib/dpkg/ ), вы root? - person ; 09.12.2009
comment
@tsubasa: вы не можете использовать apt-get, так как вы не являетесь пользователем root, вам следует загрузить исходный пакет, например .tar.gz .tar.bz2 - person RageZ; 09.12.2009
comment
Вам, вероятно, потребуется собрать ncurses из исходного кода, чтобы установить его в свой домашний каталог; большинству менеджеров пакетов требуется root для доступа к их хранилищам метаданных. - person Joe; 09.12.2009
comment
как я могу собрать ncurses из исходного кода, как вы сказали? Я пробовал использовать ./configure, все работает. но при выполнении «make install» снова возникает проблема с привилегиями root. Итак, как я могу собрать ncurse из исходного кода? Пожалуйста помоги. - person ; 09.12.2009
comment
@tsubasa - когда вы выполняете ./configure, выполните ./configure --help, и у вас должна быть возможность указать другой путь установки (который будет использоваться позже для «make install») - person Joe; 09.12.2009
comment
@tsubasa: используйте --prefix=/name/of/directory/to/install/into - person ; 09.12.2009
comment
В частности, --prefix=$HOME для установки в домашний каталог. - person caf; 09.12.2009
comment
Я бы никогда не установил в свой домашний каталог. - person ; 09.12.2009
comment
Kinopiko: Значит, вы никогда не использовали настоящую многопользовательскую систему. Обычно это единственное место, куда вы можете писать, кроме /tmp и /var/tmp. - person caf; 09.12.2009

Без библиотеки графического интерфейса, с которой можно связать, вы не сможете разработать приложение C/C++ на этом сервере. Мне кажется, у вас есть несколько вариантов:

1) Разработайте это приложение с графическим интерфейсом в другом месте. Если это должно быть в Linux, а вы являетесь пользователем Windows/Mac, вы можете установить Ubuntu (или какой-либо другой дистрибутив Linux) на виртуальную машину и получить полнофункциональную среду.

2) Свяжитесь с администратором Linux, чтобы объяснить домашнее задание и убедить его установить для вас пакет с графическим интерфейсом. (Возможно, ваш профессор также свяжется с администратором Linux) (Если вы не знаете, кто является администратором Linux, попробуйте написать по электронной почте root@linuxbox

3) Измените правила того, что такое графическая среда. Например, может ли ваше приложение C/C++ выводить HTML-файлы для графического пользовательского интерфейса через веб-браузер?

4) Попробуйте установить какой-нибудь пакет с графическим интерфейсом внутри вашей учетной записи на сервере. Это, скорее всего, потерпит неудачу, если вы не очень-очень хороши в администрировании linux-бокса и раньше не собирали пакеты вручную.

person Dan    schedule 09.12.2009

Можно сделать это с помощью ncurses

person EMiller    schedule 09.12.2009

Возможно, вы могли бы отказаться от школьного сервера и использовать Virtualbox для запуска виртуальной машины Linux локально на вашем компьютере и разработки на ней. . Это бесплатно.

person MadCoder    schedule 09.12.2009

Из файла «INSTALL» в исходном архиве ncurses:

The package gets installed beneath the --prefix directory as follows:

In $(prefix)/bin:          tic, infocmp, captoinfo, tset,
          reset, clear, tput, toe
In $(prefix)/lib:          libncurses*.* libcurses.a
In $(prefix)/share/terminfo: compiled terminal descriptions
In $(prefix)/include:      C header files
Under $(prefix)/man:       the manual pages

Note that the configure script attempts to locate previous

установки ncurses, и установит префикс по умолчанию в соответствии с тем, где он находит заголовки ncurses.

Do not use commands such as

  make install prefix=XXX

to change the prefix after configuration, since the prefix value

используется для некоторых абсолютных путей, таких как TERMINFO. Вместо этого сделайте это

  make install DESTDIR=XXX

Поэтому я бы рекомендовал использовать «make install DESTDIR=XXX», где XXX — это место, где у вас есть права на запись.

ХТН

person Community    schedule 09.12.2009