GCJ выдает ошибку: «неопределенная ссылка на главную» при компиляции - PullRequest
1 голос
/ 18 января 2020

Я хотел скомпилировать простую Java программу «Hello World», как это было представлено в GeeksforGeeks Hello World Tutorial , используя gcj в Linux Ubuntu. Это исходный код:

class HelloWorld 
{ 
    public static void main(String args[]) 
    { 
        System.out.println("Hello, World"); 
    } 
} 

Но gcj выдал две ошибки:

  1. (. Text + 0x18): неопределенная ссылка на main
  2. collect2: ошибка: ld вернул 1 состояние выхода

Исходный вывод с терминала:

gcj -o helloworld HelloWorld.java
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: error: ld returned 1 exit status

Я бы обратил внимание на требование, чтобы файл. java был назван в честь класса, который содержит main:

Важные моменты:

  • Имя класса, определенного Программа HelloWorld, которая совпадает с именем файла (HelloWorld. java). Это не случайность. В Java все коды должны находиться внутри класса, и существует не более одного публикуемого c класса, который содержит метод main ().
  • По соглашению, имя основного класса (класса, который содержит main method) должен совпадать с именем файла, содержащего программу.

Что я делаю не так?

1 Ответ

1 голос
/ 18 января 2020

Вам не хватает опции --main=, из документации , эта опция используется при связывании, чтобы указать имя класса, основной метод которого должен вызываться при запуске результирующего исполняемого файла. .

gcj -o helloworld --main=HelloWorld HelloWorld.java
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...