LINUX.ORG.RU

GCC не компилирует Hello World на Java

 , , ,


0

1

Добрый день! Допустим, беру образец отсюда и, перейдя в директорию с кодом, пишу в консоли gcj HelloWorld.java -o 'Hello World Java', на что получаю:

/usr/lib64/gcc/x86_64-slackware-linux/4.8.2/../../../../lib64/crt1.o: In function `_start':
/glibc-tmp-4ccf9267168e2e05acf2dfdc0e86d1bb/glibc-2.17/csu/../sysdeps/x86_64/start.S:119: undefined reference to `main'
collect2: error: ld returned 1 exit status
Что не так и как это поправить? Как будто чего-то не хватает, хотя в системе есть даже JDK.

★★

Ответ на: комментарий от Hasek

undefined reference to `main'

Неопределенная ссылка на главный метод.
main - входная точка в главный поток программы, и если javac по определению знает что он находится в одноименном файле главного класса отправленного на вход компилятору (если не указано обратного), то gcj не знает этого, в вашем файле может быть N-классов, и какую входную точку использовать, он определить не может.

znenyegvkby
()

Зачем тебе gcj? Из археологических соображений? Он же не развивается, застрял на уровне 15-летней давности, никем не используется. Оракл ЖДК бери.

anonymous
()

GCJ устарел и больше не развивается уже много лет. Ты уверен, что оно тебе нужно?

Deleted
()
Ответ на: комментарий от unt1tled

Спасибо, кэп, но это ничего не меняет. В одном файле может быть N-классов. Все остальное - не принципиально :)

znenyegvkby
()
Ответ на: комментарий от unt1tled

Ну и конечно же - весьма распространенная практика, собирать все свои exception'ы в одном файле, или вы и для каждого икслючения создаете свой файл? :) Сори за шланг, не удержался.

znenyegvkby
()

Как будто чего-то не хватает, хотя в системе есть даже JDK.

у GCJ другой JDK, более старый. есть ограничения, не вся ява поддерживается (чтобы оно могло откомпилироваться).

так что да, GCJ интересен только для простых примеров типа хелловордов, чуть новее — уже нужен например Excelsior JET чтобы откомпилировать более свежий JDK.

а если ты изучаешь именно Java именно чтобы изучать (а не чтобы откомпилировать) — используй обычный JDK и обычную JVM.

anonymous
()
Ответ на: комментарий от Deleted

Я не профессиональный программист (во всяком случае на данный момент) и пишу код постольку поскольку такая необходимость возникает в каких-то задачах. Поэтому для моего уровня квалификации явно с головой хватит и GCJ, которым пробовал компилировать, потому что ранее уже пользовался GCC и G++. Но в принципе буду теперь знать и использовать javac из JDK.

Hasek ★★
() автор топика
Ответ на: комментарий от Hasek

Если ты непрофессиональный программист - почитай официальные tutorials с oracle.com. Там все просто расписано. Это лучше, чем использовать опыт из другой сферы.

TheKnight ★★★
()
Ответ на: комментарий от Hasek

Парень, тебе TheKnight дело говорит. Если ты используешь java чисто из практических соображений, то возьми свежий jdk и пиши на нем как на java, а не как на c++. В чужой монастырь со своим уставом не ходят.

Aswed ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.