【问题标题】:gcc -x java on debian stretchgcc -x java 在 debian 拉伸上
【发布时间】:2017-04-07 12:57:38
【问题描述】:

gcc 6.3.0 版的 Using the GNU Compiler Collection 手册在第 28 页(pdf 的第 42 页)上表明支持语言选项 -x java。在 debian 上尝试这个:

$ gcc -x java HelloWorld.java
gcc: error trying to exec 'ecj1': execvp: No such file or directory

安装似乎是所需的包:

$ sudo apt-get install ecj1
Reading package lists... Done
...
Unpacking ecj1 (3.11.1-1) ...
Setting up ecj1 (3.11.1-1) ...
....
Reading state information... Done

但是,在此之后运行 gcc 时,我收到相同的错误消息。事实上查看/usr/bin,没有安装任何可执行的ecj1,并且运行apt-cache search ecj1 并没有建议任何其他包,而不是我安装的包。

$ gcc --version
gcc (Debian 6.3.0-11) 6.3.0 20170321

$ uname -a
Linux right 4.8.0-1-amd64 #1 SMP Debian 4.8.5-1 (2016-10-28) x86_64 GNU/Linux

关于我还可以尝试什么来让它运行的任何建议?

【问题讨论】:

    标签: java linux gcc debian


    【解决方案1】:

    必须安装用于 Java 的 GNU 编译器:

    $ apt-get install gcj-4.9 gcj-4-9-jdk
    

    使用 apt-file 搜索包含 ecj1 作为文件的包。请注意,apt-cache 仅搜索与搜索匹配的包名称/描述。

    安装后我可以使用它运行它

    $ gcj-4-9 HelloWorld.java
    

    而不是 gcc。

    尽管 gcj 是 gcc 的前端,但 gcc 对我不起作用并且抱怨没有设置类路径。要让 gcc 正常工作,它可能需要一个不同的、更复杂的命令。

    如果您正在编译包含 main 方法的类,请使用 --main 选项。

    $ gcj-4-9 --main=HelloWorld HelloWorld.java
    

    【讨论】:

    • 非常感谢卢克。以后会记得使用apt-file。在 debian 拉伸上,看起来 gcj-6 是要安装的包,它消除了缺少的 ecj1 错误。我在编译 HelloWorld.java 时仍然有一个缺少类路径的错误,但我会弄清楚的。
    • @SvenWilliamson 我在使用 gcc 时遇到了同样的缺少类路径错误。我设法让它使用 gcj 本身工作。查看更新后的答案。
    • 运行gcj-6 本身给我一个链接错误(找不到-lgcj)所以我做了sudo apt-get install libgcj17-dev 但这并没有消除问题。无论如何感谢您的帮助:)
    • @SvenWilliamson 您是否注意到我已将gcj-4-9-jdk 添加到要安装的软件包列表中?
    • 哦,是的,抱歉,在 debian stretch 上没有可用的 4.9 版本,但同时安装 gcj-6gcj-6-jdk 让我前进。谢谢你。我仍然收到错误消息。将编辑我的帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    相关资源
    最近更新 更多