【问题标题】:is it possible to have a C/C++ GUI application in linux bare-bone server?是否可以在 linux 准系统服务器中拥有 C/C++ GUI 应用程序?
【发布时间】:2009-12-09 05:05:41
【问题描述】:

在做作业时,我对学校的 linux 服务器感到非常失望。 原因是:我的作业需要制作GUI应用程序。

我拥有的所有工具是: - 从我的本地机器 ssh 到学校机器 - 我学校机器上的 gcc/g++

一周以来,我一直在思考和尝试不同的解决方案。 我仍然无法弄清楚如何将 GUI 带入我的应用程序。

这是我尝试过的一些解决方案: - 安装一些图形库 (sdl,ncurses...) 但学校计算机不允许安装,因为我不是 root 用户 - 尝试使用 /X11/ 编译以生成 X-GUI 应用程序。然后通过 ssh(隧道)运行它。这也不起作用,因为学校计算机没有位于 X11 中的头文件。

那么,我能做什么?有人有建议吗? 如果您能提供解决方案,我将万分感谢您。

非常感谢。 翼

【问题讨论】:

    标签: c++ c linux user-interface ssh


    【解决方案1】:

    如果您从源代码安装它们,应该可以在用户空间(在您的主目录中)安装大多数东西,例如 ncurses 甚至 X11。对于 Gnu 包,您只需使用 --prefix= 作为配置参数,如下所示:

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

    我不确定其他包。

    【讨论】:

    • 我试过这个但是有错误:apt-get install ncurses E: 无法打开锁定文件 /var/lib/dpkg/lock - open (13 Permission denied) E: 无法锁定管理目录(/var/lib/dpkg/),你是 root 吗?
    • @tsubasa: 不是root不能使用apt-get,需要下载源码包.tar.gz .tar.bz2
    • 您可能需要从源代码构建 ncurses 以安装到您的主目录中;大多数包管理器需要 root 才能访问其元数据存储。
    • 我怎样才能像你说的那样从源代码构建 ncurses?我尝试使用./configure,它工作正常。但是在执行“make install”时,root 权限再次出现问题。那么我怎样才能从源代码构建 ncurse 呢?请帮忙。
    • 特别是--prefix=$HOME 安装到您的主目录中。
    【解决方案2】:

    如果没有要链接的 GUI 库,您将无法在该服务器上开发 C/C++ 应用程序。在我看来,您有几个选择:

    1) 在其他地方开发这个 GUI 应用程序。如果它必须在 Linux 中,并且您是 Windows/Mac 用户,您可以在虚拟机上安装 Ubuntu(或其他一些 Linux 发行版)并获得功能齐全的环境。

    2) 联系 Linux 管理员解释家庭作业并说服他们为你安装一个 GUI 包。 (让您的教授也联系 Linux 管理员可能会有所帮助)(如果您不知道 linux 管理员是谁,请尝试发送电子邮件至 root@linuxbox

    3) 改变“GUI”环境的规则。例如,您的 C/C++ 应用程序能否通过 Web 浏览器输出 HTML 文件以获得类似 GUI 的体验?

    4) 尝试在服务器上的帐户中安装某种 GUI 包。这很可能会失败,除非您非常非常擅长管理 linux 机器,并且您以前手工构建过软件包。

    【讨论】:

      【解决方案3】:

      可以用ncurses 做到这一点

      【讨论】:

        【解决方案4】:

        也许您可以放弃学校服务器并使用Virtualbox 在您的计算机上本地运行 linux VM 并在此基础上进行开发。它是免费的。

        【讨论】:

          【解决方案5】:

          来自 ncurses 源存档中的“INSTALL”文件:

          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 是您拥有写入权限的位置。

          HTH

          【讨论】:

            猜你喜欢
            • 2010-12-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多