como construir GNU Classpath e JamVM
Pergunta
Eu estou tentando construir GNU Classpath 0,98 e JamVM 1.5.2.
Após o readme JamVM, eu fiz 'configure; faço; make install' na JamVM, e funcionou.
Eu, então, JamVM adicionado e javac Sun para o caminho.
Em seguida, com GNU Classpath Eu fiz isso:
./configure --enable-jni --disable-gtk-peer --disable-gconf-peer --disable-plugin
Eu tenho esse erro:
O javac falhou (ver config.log)
No config.log
, vejo que javac não consegue encontrar VMStackWalker (que é específico do JamVM)
Eu adicionei as classes JamVM ao CLASSPATH, então eu tenho esse erro:
O JamVM Java VM falhou (ver config.log)
No config.log
, vejo que JamVM não consegue encontrar java.lang.Class
.
O que há de errado?!
Solução
Outras dicas
Passos para compilar GNU Classpath para Ubuntu12.04: https://groups.google.com/forum/#!topic/ jruby-GSoC / -fnKnP7zxbI
Passos para compilar JamVM para o Ubuntu 12.04: https://groups.google.com/forum/#!topic / jruby-GSoC / uJ6RlVvHR-0
TJCE tentativa, necessidade classpath um compilador Java e SDK sol parece haver nenhuma boa aqui
Meu Mac OS X 10.11 aventuras:
JamVM
construído com make clean && CFLAGS="-m32" ./configure
.
GNU Classpath
levou um pouco mais:
# 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
Se você make
agora, a compilação falha com
java_io_VMConsole.c:80:19: error: use of undeclared identifier 'IUCLC'
. Acabei googling o que esse símbolo é - é um octal 01000, e acrescentou -lo direto à fonte:
vim ./native/jni/java-io/java_io_VMConsole.c
# add this line in the beginning of the file: #define IUCLC 0001000
Depois disso, ./configure continua reclamando sobre o seu javac
não ser GCJ. Parece um velho bug do GNU Classpath, eu encontrei menções de problemas semelhantes. Como você pode ver abaixo, ./configure
está quebrado e não vai funcionar com qualquer javac
diferente gcj
.
I terminou apenas editar ./configure
:
- no começo, eu adicionei um
export JAVAC=$(which javac)
linha - I substituído atribuição condicional com
JAVAC_IS_GCJ=no
Agora, ./configure
deve passar, mas make
não.
Eu grepped todo o Makefiles
que ./configure
gerado para -fsource=
, e em seguida, comentada linhas com -fsource
(é uma bandeira específica-gcj) Se houvesse um linhas alternadas com argumento -source
, ou fsource
apenas substituído com source
.
A última etapa, eu tive que Makefile
edição de nível superior e $(EXAMPLESDIR)
de exclusão da linha SUBDIRS = ...
- não compilar com um erro:
./gnu/classpath/examples/CORBA/NamingService/Demo.java:99: error:
package gnu.classpath.tools.tnameserv does not exist
gnu.classpath.tools.tnameserv.Main.main(args);"
É construído!
Eu tenho erros de executá-lo, mas ??que é uma totalmente diferente história ...
$ 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
(Eu vou atualizar a resposta se eu conseguir executá-lo)