как собрать GNU Classpath и JamVM - PullRequest
5 голосов
/ 14 апреля 2009

Я пытаюсь собрать GNU Classpath 0.98 и JamVM 1.5.2.
После readme JamVM я настроил; делать; сделайте install 'на jamVM, и это сработало.

Затем я добавил на путь jamvm и Sun javac.
Затем с GNU Classpath я сделал это:

./configure --enable-jni --disable-gtk-peer --disable-gconf-peer --disable-plugin

Я получил эту ошибку:

Сбой javac (см. Config.log)

На config.log я вижу, что javac не может найти VMStackWalker (который зависит от jamvm) Я добавил классы jamvm в CLASSPATH, затем я получил эту ошибку:

Ошибка Java VM jamvm (см. Config.log)

На config.log я вижу, что jamvm не может найти java.lang.Class.

Что не так?!

Ответы [ 4 ]

1 голос
/ 23 июня 2013

Шаги по компиляции GNU Classpath для Ubuntu12.04: https://groups.google.com/forum/#!topic/jruby-gsoc/-fnKnP7zxbI

Шаги по компиляции JamVM для Ubuntu 12.04: https://groups.google.com/forum/#!topic/jruby-gsoc/uJ6RlVvHR-0

1 голос
/ 17 апреля 2009
0 голосов
/ 30 декабря 2015

Мои Mac OS X 10.11 приключения:

JamVM

построено с make clean && CFLAGS="-m32" ./configure.

GNU Classpath

потребовалось немного больше:

# If you already made an attempt
make clean

## If you don't --disable-tools. I didn't have antlr, so I downloaded it.
#curl -O http://www.antlr.org/download/antlr-4.5.1-complete.jar

./configure --disable-gtk-peer --disable-gconf-peer \
    --disable-tools # for tools: --with-antlr-jar=antlr-4.5.1-complete.jar

Если вы make сейчас, компиляция завершится неудачно с java_io_VMConsole.c:80:19: error: use of undeclared identifier 'IUCLC'. Я закончил тем, что гуглил, что это за символ - это восьмеричный 01000, и добавил его прямо к источнику:

vim ./native/jni/java-io/java_io_VMConsole.c
# add this line in the beginning of the file: #define IUCLC   0001000

После этого ./configure продолжает жаловаться на то, что вы javac не являетесь GCJ. Похоже, старая ошибка GNU Classpath, я нашел упоминания о похожих проблемах. Как вы видите ниже, ./configure не работает и не будет работать с любыми javac, кроме gcj.

В итоге я просто отредактировал ./configure:

  • в начале я добавил строку export JAVAC=$(which javac)
  • Я заменил условное присвоение на JAVAC_IS_GCJ=no

Теперь ./configure должно пройти, но make не пройдет.

Я собрал все Makefiles, которые ./configure сгенерировал для -fsource=, а затем либо закомментировал строки с -fsource (это специфичный для gcj флаг), если были альтернативные строки с аргументом -source, или просто заменили fsource на source.

Последний шаг, мне пришлось отредактировать Makefile верхнего уровня и удалить $(EXAMPLESDIR) из строки SUBDIRS = ... - он не скомпилировался с ошибкой:

./gnu/classpath/examples/CORBA/NamingService/Demo.java:99: error: 
    package gnu.classpath.tools.tnameserv does not exist
      gnu.classpath.tools.tnameserv.Main.main(args);"

Он построен!

Я получил ошибки при его запуске, но это совсем другая история ...

$ DYLD_FALLBACK_LIBRARY_PATH=/usr/local/classpath/lib/classpath \
  /usr/local/jamvm/bin/jamvm -verbose:class -verbose:jni Test
...
Failed to open library /usr/local/classpath/lib/classpath/libjavanio:
dlopen(/usr/local/classpath/lib/classpath/libjavanio.so, 
1): image not found]
...
Exception occurred while printing exception (java/lang/NoClassDefFoundError)...
Original exception was java/lang/UnsatisfiedLinkError

(я обновлю ответ, если мне удастся его запустить)

0 голосов
/ 26 апреля 2010

попробуйте ecj, classpath нужен Java-компилятор, и Sun SDK здесь не годится

...