@ledsun blog

無味の味は佳境に入らざればすなわち知れず

ruby:3.0.1-alpine Dockerイメージでsimstring gemがビルドできない

simstringとswigの問題の切り分け - @ledsun blog で、simstringのgemをビルドするときはprepare.sh--swigオプションをつける必要があることがわかりました。

simstring gemをDocker上で使いたいです。 Dockerコンテナを小さめにするために、Alpine Linux上でビルドしてみます。 次のエラーがおきます。

bash-5.1# make
compiling export_wrap.cpp
In file included from /usr/local/include/ruby-3.0.0/ruby/ruby.h:39,
                 from /usr/local/include/ruby-3.0.0/ruby.h:38,
                 from export_wrap.cpp:880:
/usr/local/include/ruby-3.0.0/ruby/internal/memory.h:276:16: error: conflicting declaration of 'void* ruby_nonempty_memcpy(void*, const void*, size_t)' with 'C' linkage
  276 | #define memcpy ruby_nonempty_memcpy
      |                ^~~~~~~~~~~~~~~~~~~~
/usr/local/include/ruby-3.0.0/ruby/internal/memory.h:266:1: note: previous declaration with 'C++' linkage
  266 | ruby_nonempty_memcpy(void *dest, const void *src, size_t n)
      | ^~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:237: export_wrap.o] Error 1

error: conflicting declaration of 'void ruby_nonempty_memcpy(void, const void*, size_t)' with 'C' linkage

エラーメッセージでググると次のissueが見つかります。

bugs.ruby-lang.org

解決されています。 ということはベースにしているDockerイメージのバージョンをあげれば?