У меня возникает необычная ошибка сборки при использовании Buildroot для создания образа для моего Phidget SBC. Это необычно, потому что это происходит ТОЛЬКО на моем ноутбуке для разработки, а НЕ на моем обычном ноутбуке, хотя я использую ТОЧНО ту же среду Builroot, что и опубликовано самими Phidgets.
Когда я пытаюсь создать образ Buildroot, я получаю следующую ошибку при попытке скомпилировать путь к классам GNU:
Making all in tools
make[2]: Entering directory `/home/xxxx/buildroot_phidgetsbc/buildroot-phidgetsbc_1.0.4.20111028/output/build/classpath-0.98/tools'
/bin/mkdir -p classes asm
/bin/mkdir -p ../tools/generated/gnu/classpath/tools/gjdoc/expr
java -classpath antlr.Tool -o ../tools/generated/gnu/classpath/tools/gjdoc/expr/ \
./gnu/classpath/tools/gjdoc/expr/java-expression.g
Unrecognized option: -o
Could not create the Java virtual machine.
make[2]: *** [tools.zip] Error 1
Единственная разница, о которой я могу сказать, это разные версии Linux (Ubuntu), которые я использую на каждом ноутбуке. Также я не могу найти параметр -o, задокументированный для Java, и не понимаю, почему он работает на одном ноутбуке, а не на другом.
Любые предложения будут полезны.
** ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ **
Я взглянул на Makefile и вот, что я думаю, соответствующие строки:
ANTLR = java -classpath antlr.Tool...
#Чтобы сгенерировать пример zip, просто используйте исходники и игнорируйте #файлы классов. Всегда регенерируйте все файлы .class и немедленно удаляйте их. И скопируйте файлы шаблонов, которые мы используем, в директорию классов #, чтобы они также были включены.
$(TOOLS_ZIP): $(ALL_TOOLS_FILES)
@rm -rf классы asm /bin/mkdir -p классы asm /bin/mkdir -p $(gjdoc_gendir)/gnu/classpath/tools/gjdoc/expr
$(ANTLR) -o $(gjdoc_gendir)/gnu /classpath/tools/gjdoc/expr/ \
$(srcdir)/gnu/classpath/tools/gjdoc/expr/java-expression.g
Вы можете видеть, где строка «проблема» встречается в последней приведенной выше строке.
** ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ 2 И РЕШЕННАЯ ПРОБЛЕМА **
Я проверил Makefile на своей «обычной» машине, и он отличается от моего ноутбука «для разработки». У меня «antlr» установлен на моей «обычной» машине, тогда как на моей разработке его не было. Я предполагаю, что когда ./configure был запущен, он уловил это и изменил команду antlr, чтобы она подходила, за исключением того, что на моей машине разработки она создала ошибочную альтернативу. Для справки, мой «обычный», т.е. рабочий make-файл:
ANTLR = runantlr ANTLR_JAR = /usr/share/java/antlr.jar
Установка antlr на моем компьютере для разработки решила проблему.
Спасибо за помощь