Files
mruby-mruby/doc/guides/link.md
T
John Bampton 9d32d440eb feat(CI): add the GitHub Super Linter
The GitHub Super Linter is a more robust and better supported
tool than the current GitHub Actions we are using.

Running these checks:

ERROR_ON_MISSING_EXEC_BIT: true
VALIDATE_BASH: true
VALIDATE_BASH_EXEC: true
VALIDATE_EDITORCONFIG: true
VALIDATE_MARKDOWN: true
VALIDATE_SHELL_SHFMT: true
VALIDATE_YAML: true

https://github.com/marketplace/actions/super-linter
https://github.com/github/super-linter

Added the GitHub Super Linter badge to the README.

Also updated the pre-commit framework and added
more documentation on pre-commit.

Added one more pre-commit check: check-executables-have-shebangs

Added one extra check for merge conflicts to our
GitHub Actions.

EditorConfig and Markdown linting.

Minor grammar and spelling fixes.

Update linter.yml
2021-04-16 16:37:52 +09:00

2.5 KiB

Linking libmruby to your application

You have two ways to link libmruby to your application.

  • using executable gem.
  • using normal compilation process

Executable Gems

If your application is relatively small, mrbgem is an easier way to create the executable. By tradition, the gem name start with mruby-bin-, e.g. mruby-bin-debugger.

mrbgem.rake file

The executable name is specified in mrbgem.rake file at the top of your mrbgem directory.

MRuby::Gem::Specification.new('mruby-bin-example') do |spec|
  spec.license = 'MIT'
  spec.author  = 'mruby developers'
  spec.summary = 'Example for executable command gem'
  spec.bins = %w(mruby-example)    # <- this is binary name
end

Source tree structure

The source file for the gem executable should be in <gem-name>/tools/<bin-name>. Currently, we support C or C++ source code (.c, .cpp, .cxx, .cc) for the executable. Ruby source files are not supported. Put the functionality in the different gem and specify dependency to it in mrbgem.rake.

Normal compilation process

The libmruby is a normal library so that you can just link it to your application. Specify proper compiler options (-I etc.) and linker options (-Lmruby etc.) to compile and link your application. Specify those options in your build script (e.g. Makefile).

Compiler options

You need to specify compiler options that are compatible to mruby configuration, for example:

  • -I to specify the place for mruby header files
  • -D to specify mruby configuration macros

To retrieve compiler options used to build mruby, you can use mruby-config command with following options:

  • --cc compiler name
  • --cflags options passed to compiler
$ mruby-config --cflags
-std=gnu99 -g -O3 -Wall -DMRB_GC_FIXED_ARENA -I/home/matz/work/mruby/include -I/home/matz/work/mruby/build/host/include

Linker options

Just like compiler options, you need to specify linker options that are compatible to mruby configuration.

To retrieve linker options, you can use mruby-config with following options:

  • --ld linker name
  • --ldflags options passed to linker
  • --ldflags-before-libs options passed to linker before linked libraries
  • --libs linked libraries
$ mruby-config --ldflags
-L/home/matz/work/mruby/build/host/lib

$ mruby-config --ldflags-before-libs
# <nothing in this case>

$ mruby-config --libs
-lmruby -lm