2012-03-21 31 views
4

我正在使用Eclipse CDT编写应用程序。该应用程序使用第三部分API,这就要求作为sudo的运行,为了打开原始套接字等Linux,Eclipse CDT运行为su

在命令行中,我可以运行程序类似

su 
./program 

但在Eclipse CDT的环境,如果我按Ctrl + F11(Run-> Run Last Launched),它将不起作用,我猜是因为我的Linux GUI登录不是su。

是否有无论如何,我可以作为su(与su密码)在Eclipse CDT中运行?

谢谢。

回答

3

你们中有些人有选择:

  1. 运行Eclipse作为根。 (不是一个很好的主意,恕我直言,但最简单的一个)

  2. 暂时让您的用户使用该库。 (可能会混乱)

  3. 创建一个新的运行配置并创建一个脚本来运行您的可执行文件(您必须每次输入密码)。

  4. (@Others,随意添加更多)。

0

您可以创建在您使用sudo来运行应用程序的运行配置。由于sudo以这种方式启动时无法访问终端,因此需要在启动配置中设置SUDO_ASKPASS环境变量。具体步骤如下:

  1. 创建一个新的运行配置(完整起见):

    1. 在Eclipse中,右键单击您的可执行文件(即你的应用程序的生成的结果)打开上下文菜单
    2. 在上下文菜单中,去运行为 - >运行配置...
    3. 运行configuratio ns出现的窗口,右键单击C/C++应用程序并单击新的
  2. 修改Run配置

    1. 在运行构型的主标签,通过
      /usr/bin/sudo更换C/C++应用字段。
    2. 转到参数选项卡,然后输入可执行文件的路径,例如,
      ./bin/my-executable。注意:sudo的工作目录是eclipse项目,所以路径应该是相对的。
    3. 如果您的可执行文件需要任何命令行参数,请添加这些参数
      ./bin/my-executable arg1 arg2
  3. 添加对sudo索要您的密码的方式。

    1. 这是最棘手的部分。由于sudo在从(日食)gui运行时没有可用的终端(tty),因此我们需要为其提供一个可以获取其密码的程序,即要求程序程序。有关更多信息,请参见this stackoverflow answer
    2. 在我的系统(Ubuntu 15.04)上,包ssh-askpass-gnome提供了一个askpass程序,正如我通过运行dpkg --get-selections | grep askpass发现的。由于这仍然没有给我可执行文件的名称,所以我通过运行
      sudo find -name *askpass*蛮横强制搜索。无论如何,如果没有安装此类实用程序,请使用您最喜欢的软件包管理器搜索它。
    3. 一旦我们安装并且/或者找到了一个askpass程序,我们可以在eclipse中继续创建我们的启动配置;从步骤2.3继续
    4. 在运行配置窗口中,选择环境选项卡并单击新的
    5. 在弹出的对话框中,输入SUDO_ASKPASS作为名称,并将askpass程序的完整路径作为值输入。 /usr/bin/ssh-askpass
    6. 新闻申请保存我们的更改。
  4. 执行的启动配置
    1. 运行配置窗口,按运行使用新创建的启动配置来启动我们的可执行文件。
    2. 将出现一个弹出窗口,用于输入密码sudo
    3. 在成功输入密码后,我们的可执行文件将以root权限运行。