やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

MMD読込ライブラリmmdpiをビルドする

 ライブラリだけはできた。が、実行用バイナリはビルド失敗。

情報源

手順

raspi-config

 Advanced OptionsGL DriverLegacyを選択する。

git clone https://github.com/shirobu2400/mmdpi
cd mmdpi
cmake . -Dpi=on
make

ログ

$ cmake . -Dpi=on
-- The C compiler identification is GNU 8.3.0
-- The CXX compiler identification is GNU 8.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found ZLIB: /usr/lib/arm-linux-gnueabihf/libz.so (found version "1.2.11") 
-- Found PNG: /usr/lib/arm-linux-gnueabihf/libpng.so (found version "1.6.36") 
-- Found JPEG: /usr/lib/arm-linux-gnueabihf/libjpeg.so (found version "62") 
-- Found GLUT: /usr/lib/arm-linux-gnueabihf/libglut.so  
CMake Warning at libmmdpi/CMakeLists.txt:118 (find_package):
  By not providing "Findglut.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "glut", but
  CMake did not find one.

  Could not find a package configuration file provided by "glut" with any of
  the following names:

    glutConfig.cmake
    glut-config.cmake

  Add the installation prefix of "glut" to CMAKE_PREFIX_PATH or set
  "glut_DIR" to a directory containing one of the above files.  If "glut"
  provides a separate development package or SDK, be sure it has been
  installed.


CMake Warning at libmmdpi/CMakeLists.txt:119 (find_package):
  By not providing "Findfreeglut.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "freeglut",
  but CMake did not find one.

  Could not find a package configuration file provided by "freeglut" with any
  of the following names:

    freeglutConfig.cmake
    freeglut-config.cmake

  Add the installation prefix of "freeglut" to CMAKE_PREFIX_PATH or set
  "freeglut_DIR" to a directory containing one of the above files.  If
  "freeglut" provides a separate development package or SDK, be sure it has
  been installed.


CMake Warning at mmdpiv/CMakeLists.txt:63 (find_package):
  By not providing "Findglut.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "glut", but
  CMake did not find one.

  Could not find a package configuration file provided by "glut" with any of
  the following names:

    glutConfig.cmake
    glut-config.cmake

  Add the installation prefix of "glut" to CMAKE_PREFIX_PATH or set
  "glut_DIR" to a directory containing one of the above files.  If "glut"
  provides a separate development package or SDK, be sure it has been
  installed.


CMake Warning at mmdpiv/CMakeLists.txt:64 (find_package):
  By not providing "Findfreeglut.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "freeglut",
  but CMake did not find one.

  Could not find a package configuration file provided by "freeglut" with any
  of the following names:

    freeglutConfig.cmake
    freeglut-config.cmake

  Add the installation prefix of "freeglut" to CMAKE_PREFIX_PATH or set
  "freeglut_DIR" to a directory containing one of the above files.  If
  "freeglut" provides a separate development package or SDK, be sure it has
  been installed.


CMake Warning (dev) at mmdpiv/CMakeLists.txt:128 (link_directories):
  This command specifies the relative path

    ../libmmdpi

  as a link directory.

  Policy CMP0015 is not set: link_directories() treats paths relative to the
  source dir.  Run "cmake --help-policy CMP0015" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring done
CMake Warning (dev) in mmdpiv/CMakeLists.txt:
  Policy CMP0081 is not set: Relative paths not allowed in LINK_DIRECTORIES
  target property.  Run "cmake --help-policy CMP0081" for policy details.
  Use the cmake_policy command to set the policy and suppress this warning.

  Found relative path while evaluating link directories of "mmdpiv":

    "../libmmdpi"

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Generating done
-- Build files have been written to: /tmp/work/mmdpi
$ make
Scanning dependencies of target mmdpis
[  1%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/mmdpi.cpp.o
[  3%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/model/tools/get_bin.cpp.o
[  5%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/model/tools/bitmap.cpp.o
[  7%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/model/tools/png.cpp.o
[  9%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/model/tools/jpg.cpp.o
[ 11%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/model/tools/dds.cpp.o
[ 13%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/model/tools/tga_image.cpp.o
[ 15%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/model/tools/utf8_sjis.cpp.o
[ 17%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/model/mmdpi_model.cpp.o
[ 19%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/model/mmdpi_shader.cpp.o
[ 21%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/model/mmdpi_adjust.cpp.o
[ 23%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/model/mmdpi_bone.cpp.o
[ 25%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/model/mmdpi_mesh.cpp.o
[ 26%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/pmx/pmx_ik.cpp.o
[ 28%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/pmx/pmx_load.cpp.o
[ 30%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/pmx/pmx_analyze.cpp.o
[ 32%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/pmx/pmx_draw.cpp.o
[ 34%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/pmx/pmx.cpp.o
[ 36%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/pmd/pmd_ik.cpp.o
[ 38%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/pmd/pmd_load.cpp.o
[ 40%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/pmd/pmd_analyze.cpp.o
[ 42%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/pmd/pmd_draw.cpp.o
[ 44%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/pmd/pmd.cpp.o
[ 46%] Building CXX object libmmdpi/CMakeFiles/mmdpis.dir/vmd/vmd.cpp.o
[ 48%] Linking CXX shared library libmmdpis.so
[ 48%] Built target mmdpis
Scanning dependencies of target mmdpi
[ 50%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/mmdpi.cpp.o
[ 51%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/model/tools/get_bin.cpp.o
[ 53%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/model/tools/bitmap.cpp.o
[ 55%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/model/tools/png.cpp.o
[ 57%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/model/tools/jpg.cpp.o
[ 59%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/model/tools/dds.cpp.o
[ 61%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/model/tools/tga_image.cpp.o
[ 63%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/model/tools/utf8_sjis.cpp.o
[ 65%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/model/mmdpi_model.cpp.o
[ 67%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/model/mmdpi_shader.cpp.o
[ 69%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/model/mmdpi_adjust.cpp.o
[ 71%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/model/mmdpi_bone.cpp.o
[ 73%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/model/mmdpi_mesh.cpp.o
[ 75%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/pmx/pmx_ik.cpp.o
[ 76%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/pmx/pmx_load.cpp.o
[ 78%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/pmx/pmx_analyze.cpp.o
[ 80%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/pmx/pmx_draw.cpp.o
[ 82%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/pmx/pmx.cpp.o
[ 84%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/pmd/pmd_ik.cpp.o
[ 86%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/pmd/pmd_load.cpp.o
[ 88%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/pmd/pmd_analyze.cpp.o
[ 90%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/pmd/pmd_draw.cpp.o
[ 92%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/pmd/pmd.cpp.o
[ 94%] Building CXX object libmmdpi/CMakeFiles/mmdpi.dir/vmd/vmd.cpp.o
[ 96%] Linking CXX static library libmmdpi.a
[ 96%] Built target mmdpi
Scanning dependencies of target mmdpiv
[ 98%] Building CXX object mmdpiv/CMakeFiles/mmdpiv.dir/glmain_pi.cpp.o
In file included from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/../model/tools/../mmdpi_include.h:19,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/../model/tools/get_bin.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/pmd_load.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/pmd_analyze.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/pmd_draw.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/pmd.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/mmdpi.h:2,
                 from /tmp/work/mmdpi/mmdpiv/glmain_pi.cpp:56:
/usr/include/GL/glew.h:88:2: error: #error gl2.h included before glew.h
 #error gl2.h included before glew.h
  ^~~~~
In file included from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/../model/tools/../mmdpi_include.h:19,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/../model/tools/get_bin.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/pmd_load.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/pmd_analyze.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/pmd_draw.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/pmd.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/mmdpi.h:2,
                 from /tmp/work/mmdpi/mmdpiv/glmain_pi.cpp:56:
/usr/include/GL/glew.h:1680:19: error: conflicting declaration ‘typedef ptrdiff_t GLintptr’
 typedef ptrdiff_t GLintptr;
                   ^~~~~~~~
In file included from /tmp/work/mmdpi/mmdpiv/glmain_pi.cpp:10:
/opt/vc/include/GLES2/gl2.h:65:26: note: previous declaration as ‘typedef khronos_intptr_t GLintptr’
 typedef khronos_intptr_t GLintptr;
                          ^~~~~~~~
In file included from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/../model/tools/../mmdpi_include.h:19,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/../model/tools/get_bin.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/pmd_load.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/pmd_analyze.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/pmd_draw.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/pmd/pmd.h:2,
                 from /tmp/work/mmdpi/mmdpiv/../libmmdpi/mmdpi.h:2,
                 from /tmp/work/mmdpi/mmdpiv/glmain_pi.cpp:56:
/usr/include/GL/glew.h:1681:19: error: conflicting declaration ‘typedef ptrdiff_t GLsizeiptr’
 typedef ptrdiff_t GLsizeiptr;
                   ^~~~~~~~~~
In file included from /tmp/work/mmdpi/mmdpiv/glmain_pi.cpp:10:
/opt/vc/include/GLES2/gl2.h:66:26: note: previous declaration as ‘typedef khronos_ssize_t GLsizeiptr’
 typedef khronos_ssize_t  GLsizeiptr;
                          ^~~~~~~~~~
make[2]: *** [mmdpiv/CMakeFiles/mmdpiv.dir/build.make:63: mmdpiv/CMakeFiles/mmdpiv.dir/glmain_pi.cpp.o] エラー 1
make[1]: *** [CMakeFiles/Makefile2:185: mmdpiv/CMakeFiles/mmdpiv.dir/all] エラー 2
make: *** [Makefile:130: all] エラー 2

 以下エラーが出た。

/usr/include/GL/glew.h:88:2: error: #error gl2.h included before glew.h

 だが、ライブラリ./libmmdpi/libmmdpis.soは作成されていた。

所感

 なんとかライブラリの動作確認をしたい。

対象環境

$ uname -a
Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux