【问题标题】:GCC Error: Could not find or load main class com.intellij.idea.Main compiling CGCC 错误:无法找到或加载主类 com.intellij.idea.Main 编译 C
【发布时间】:2017-09-30 05:24:42
【问题描述】:

无论我做什么,GCC 都会出现这个错误。我已经卸载了 gcc 和所有库,重新安装并重新启动。 gcc 昨晚还在工作,今天我打开笔记本电脑时,它会尝试查找 intellij 文件。

这是我在运行 make 时遇到的错误。注意:我尝试编译的每个源文件都会发生这种情况。今天才开始。昨天还在工作。

gcc -c war.c 
Error: Could not find or load main class com.intellij.idea.Main

https://github.com/ahester57/WAR

which gcc 给我/usr/bin/gcc

which as 给我/usr/bin/as

我试过/usr/bin/gcc -c war.c,它给出了保存错误(与intellij有关)。我什至没有安装 intellij。

只是寻找任何见解,如果没有其他人遇到此问题,可能会重新安装操作系统。在 Ubuntu 17.04 上使用 vim 和 bash。 17.10 指日可待。

$ gcc -v -Wall -g ptr.c -o ptr
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 6.3.0-12ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 6.3.0 20170406 (Ubuntu 6.3.0-12ubuntu2) 
COLLECT_GCC_OPTIONS='-v' '-Wall' '-g' '-o' 'ptr' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/6/cc1 -quiet -v -imultiarch x86_64-linux-gnu ptr.c -quiet -dumpbase ptr.c -mtune=generic -march=x86-64 -auxbase ptr -g -Wall -version -fstack-protector-strong -Wformat-security -o /tmp/ccjR19rz.s
GNU C11 (Ubuntu 6.3.0-12ubuntu2) version 6.3.0 20170406 (x86_64-linux-gnu)
    compiled by GNU C version 6.3.0 20170406, GMP version 6.1.2, MPFR version 3.1.5, MPC version 1.0.3, isl version 0.15
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/6/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/6/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
GNU C11 (Ubuntu 6.3.0-12ubuntu2) version 6.3.0 20170406 (x86_64-linux-gnu)
    compiled by GNU C version 6.3.0 20170406, GMP version 6.1.2, MPFR version 3.1.5, MPC version 1.0.3, isl version 0.15
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 5a80a4e17a9c5c8f646e6b274db1ec27
COLLECT_GCC_OPTIONS='-v' '-Wall' '-g' '-o' 'ptr' '-mtune=generic' '-march=x86-64'
 as -v --64 -o /tmp/cc267OI7.o /tmp/ccjR19rz.s
Error: Could not find or load main class com.intellij.idea.Main

感谢 Basile,让 gcc 再次工作。

解决方案:

apt-get reinstall gcc gcc-multilib
apt-get reinstall binutils

【问题讨论】:

  • 在哪个操作系统上?可能缺少linux 标签
  • which gccgcc --version 和/或 gcc -v 的输出是什么?他们应该回答问题,所以请编辑您的问题以改进它。 “自我修复”的希望是幼稚的(如果发生这种情况,你应该害怕)
  • 也许你把你的系统搞砸了?你能得到管理方面的帮助吗?
  • 您的系统可能被严重破坏了。它是 Debian 还是 Ubuntu?那就试试apt-get reinstall gcc-6 gcc
  • 提出其他问题并在其中显示您键入的确切命令。首先在控制台中成功编译一个 hello-world 程序。顺便说一句,您的 gcc 命令完全错误。在一些全新的终端中尝试它们。

标签: c linux gcc makefile sysadmin


【解决方案1】:

输入which gccwhich as(我不会惊讶输出会很奇怪,应该是/usr/bin/gcc/usr/bin/as)然后输入gcc -vgcc --version;正确(可能在~/.bashrc 中)您的$PATH 的设置(所以使用echo $PATH 找出它是什么)并在您的Makefile 中使用$(CC)。顺便说一句,您不需要 Makefile 中带有 gcc 的行,因为 make 具有内置规则(键入 make -p 以查找它们)

如果这还不够(应该)添加一个明确的

CC= /usr/bin/gcc

在您的Makefile 中,这是非常错误的。

花时间阅读documentation of make,然后完全重写您的Makefile

查看thisthat 的答案(它们包含相关示例)

您应该使用所有警告和调试信息进行编译,可能是通过

CFLAGS+= -Wall -Wextra -g

另请阅读documentation of GCC。您可能不需要-w,并且您错误地使用了-c(它正在跳过linking 步骤而只是编译)。

顺便说一句,gcc 的参数顺序很重要(你弄错了)。

我已卸载 gcc 和所有库,重新安装并重新启动。 gcc 昨晚还在工作,今天我打开笔记本电脑时,它会尝试查找 intellij 文件。

PS。也许您的/usr/bin/gcc 已损坏(或者您的asgcc 使用,请尝试重新安装binutils 软件包)并且可能您的系统已损坏,您需要先修复它才能编辑一个简单的helloworld.c 程序然后执行(在一个fresh 终端运行一个shellbashzsh)一个gcc -v -Wall -g helloworld.c -o helloworldprogram 然后运行./helloworldprogram .一切就绪后,阅读documentation of makedocumentation of GCC 并重新开始您的项目。

附录

在您提到https://github.com/ahester57/WAR 的评论中,这里是提交7ed7133e09c7bb2af 的更好的Makefile:

 # Makefile improved by Basile Starynkevitch

 CC= gcc
 CFLAGS= -Wall -g
 LDLIBS= -lm
 SOURCES= cards.c war.c
 # or perhaps SOURCES= $(wildcard *.c)

 OBJECTS= $(patsubst %.c,%.o,$(SOURCES))

 .PHONY: all clean

 all: war

 war: $(OBJECTS)

 $(OBJECTS): cards.h

 clean:
    $(RM) $(OBJECTS) war *~

【讨论】:

  • 我使用了很多 unicode,否则我会收到大量警告。这只是为了一个愚蠢的战争(纸牌游戏)模拟。但是,gcc 根本不起作用。我试过 /usr/bin/gcc -c war.c 它给出了保存错误(与intellij有关)。我什至没有安装 intellij。
  • 我强烈建议您花几天时间阅读文档
  • 你说得对,我已经很久没有使用make了。但我目前的问题是让 gcc 和 g++ 正常工作。
  • 但这是一个非常不同的问题——它是一个系统管理员的问题——它可能应该去其他地方(有很多更多细节,其中的几段),也许unix.stackexchange.comaskubuntu.com
  • 我只是要备份并获取一个新的操作系统
【解决方案2】:

您看到的问题是 as(GNU 汇编器)没有找到。 当 gcc 尝试加载汇编器时,会尝试一些完全不同的东西。

我的(疯狂的)猜测是您将 Android Studio 安装为“as”。至少错误消息看起来有点熟悉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 2016-06-12
    • 2016-03-16
    • 2016-01-03
    相关资源
    最近更新 更多