Составление мрубы

Я пытаюсь собрать Mruby. Я впервые компилирую что-то из командной строки. Когда я запускаю make в каталоге, я получаю это:

make -C mrblib --no-print-directory CC=gcc LL=gcc
make -C ../tools/mrbc --no-print-directory CC=gcc LL=gcc
gcc -Wall -Werror-implicit-function-declaration -g -MMD -I../../src -I../../src/../include -c ../../src/st.c -o ../../src/st.o
In file included from ../../src/regint.h:93,
                 from ../../src/st.c:6:
../../src/../include/mruby.h: In function ‘mrb_special_const_p’:
../../src/../include/mruby.h:100: warning: comparison is always true due to limited range of data type
../../src/st.c: In function ‘st_hash’:
../../src/st.c:1053: error: ‘SIZEOF_ST_INDEX_T’ undeclared (first use in this function)
../../src/st.c:1053: error: (Each undeclared identifier is reported only once
../../src/st.c:1053: error: for each function it appears in.)
make[2]: *** [../../src/st.o] Error 1
make[1]: *** [../bin/mrbc] Error 2
make: *** [src/mrblib/mrblib.o] Error 2

Buildig на Mac OS X 10.7.3 Есть ли шаг, который мне не хватает? Спасибо

3 ответа

Решение

Эта проблема была исправлена ​​несколько часов назад. Просто получите свежую копию сундука.

Я получил это работает для Windows. Хоть бы поделиться этим, на случай, если людям это нужно:)

Я использовал: ОС Windows, компилятор mingw, бизон (извлеките двоичный файл и зависимость, иначе вы получите ошибку dll not found) ruby

Установите всю папку bin (mindw, bison и ruby) в переменной окружения PATH.

Затем внутри папки mruby запустите: mingw32-make.exe (находится в папке Bin вашего mingw).

Если все переменные PATH были установлены правильно, ваш код должен скомпилироваться.

Теперь вы должны увидеть.\ Build\host\bin с исполняемым файлом и.\ Build\host\lib с необходимой библиотекой.

Затем создайте программу на C++ (я использовал C:: B).

#include <stdlib.h>
#include <stdio.h>
#include <mruby.h>
#include <mruby/compile.h>

int main(void)
{
  mrb_state *mrb = mrb_open();
  if (!mrb) { /* handle error */ }
  puts("Executing Ruby code from C!");
  mrb_load_string(mrb, "p 'hello world!'");
  mrb_close(mrb);
  return 0;
}

@ Андрей пример не работает для меня. Я получаю сообщение об ошибке: "mrb_load_string" не было объявлено в этой области

Я исправил ошибку, включив: #include

Я надеюсь, что это очень полезно для установки библиотеки для Windows!

В случае, если это может быть полезно для всех, вот краткое руководство о том, как начать работу с mruby:

В качестве предварительного условия убедитесь, что у вас есть git, компилятор C и bison. Вы, вероятно, уже установили это.

Клонировать исходный код mruby, в этом случае я собираюсь поместить его в ~/mruby:

git clone https://github.com/mruby/mruby.git ~/mruby

В вашем профиле bash создайте переменную, которая указывает на корень этого каталога. Это будет полезно позже.

export MRUBY_HOME=~/mruby

Теперь в корневом каталоге mruby запустите make:

cd $MRUBY_HOME && make

Mruby теперь собрал некоторые вещи и поместил их в build каталог. Там вы найдете библиотеку для включения в ваши собственные сценарии.

Теперь давайте скомпилируем пример сценария. Назовите этот файл example.c:

#include <stdlib.h>
#include <stdio.h>
#include <mruby.h>

int main(void)
{
  mrb_state *mrb = mrb_open();
  char code[] = "p 'hello world!'";
  printf("Executing Ruby code from C!\n");
  mrb_load_string(mrb, code);
  return 0;
}

Чтобы скомпилировать этот скрипт, нам нужно указать архив библиотеки mruby, который мы только что скомпилировали, и включить каталог включения mruby, содержащий файлы заголовков:

gcc example.c $MRUBY_HOME/build/host/lib/libmruby.a -I $MRUBY_HOME/include

Это создаст файл с именем a.out, Чтобы указать конкретное имя файла, вы можете передать -o опция и имя файла, который должен использоваться для скомпилированного вывода. Выполнение нашей вновь скомпилированной программы должно отображаться как ожидается:

./a.out
Executing Ruby code from C!
hello world!
Другие вопросы по тегам