Связывание Ruby переводчика с программой C - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь включить интерпретатор Ruby в программу C. Я использовал эту ссылку в качестве руководства: https://silverhammermba.github.io/emberb/embed/#startup -Tardown .

У меня есть следующий код в C:

#include <ruby.h>

int main(int argc, char* argv[])
{
    /* construct the VM */
    ruby_init();

    // puts "hola"
    /* Ruby goes here */

    /* destruct the VM */
    return ruby_cleanup(0);
}

Проблема когда я пытаюсь скомпилировать код, я получаю следующее сообщение:

ссылка на ruby_init undefined

ссылка на ruby_cleanup undefined

1 Ответ

1 голос
/ 10 января 2020

Вам необходимо связать с libruby, как указано в ссылке:

Для встраивания Ruby требуется один заголовок ruby.h, который включает в себя спецификацию платформы c заголовок ruby/config.h. Вы, вероятно, должны будете сообщить своему компилятору о путях включения для этих заголовков. Вам также нужно будет связаться с Ruby lib. На моей машине мои минимальные параметры компилятора:

$ gcc -I/usr/include/ruby-2.5.0 -I/usr/include/ruby-2.5.0/x86_64-linux -lruby

Хотя, если доступно, вы действительно должны использовать pkg-config, чтобы получить соответствующие параметры для вашего дистрибутива:

$ pkg-config --cflags --libs ruby-2.5

Сочетая эти два, вы получите gcc $(pkg-config --cflags --libs ruby-2.5) <files> <libs>.

...