PC6001V をWindows でビルドしようぜ (失敗の巻)(追記あり)

あまりいらっしゃらないと思いますが、一応メモっておきます。

下記を参考にして、MSYS2 と、mingw を入れます。

Windows development (MSYS2)

 

下記を参考にして、x86_64 のミラーを Jaist に変えます。

msys2のミラーにjaistを使いたい - Qiita

 

変えなくてもいけるかもしれませんが、私の環境では、ffmpeg を入れるときに、通信が遅すぎるなどの理由で、途中で止まってしまったので、変えた方が良さそうです。

 

上記のURLを参考にしながら、c:¥msys64¥etc¥pacman.d¥mirrorlist.mingw64 ファイルの先頭に、下記の文言を挿入します。(vim からは挿入できなかったので、Windowsテキストエディタで変更)

Server = https://jaist.dl.sourceforge.net/project/msys2/REPOS/MINGW/x86_64

先頭から順番に使われるためらしいです。

 

必要なライブラリを入れます。

$ pacman -S mingw-w64-x86_64-ffmpeg

$ pacman -S mingw-w64-x86_64-libpng

$ pacman -S mingw-w64-x86_64-SDL2

 

PC6001V のソースリストを落としてきて、適当なディレクトリに展開します。

Makefile のあるところで、make します。

 

。。。が、なぜか、リンクエラーになりますね。。(´・ω・`) ショボーン

-lrav1e とか、-ld1 などが見つからないそうです。。

大体は、あっていると思うのですが。。

 

なぜ?

 

ちなみに、1年前も、同じようなことをやっていたようですが。。この時も同じだったのかな?(´・ω・`)

 

■ - Windy の日記

 

 

追記

 

-lrav1e は、スタティックリンク用の、librav1e.a というファイルを探しているようです(後ろから二文字目は、数字の1)が、ffmpeg を入れても、入ってくれません。ダイナミックリンク用の、librav1e.dll.a ならあるので、とりあえず、リンカーに渡しているオプションから、-static-libgcc -static-libstdc++ --static を削除します。

 

あと、-ldl というのが何回も出てきますが、なくても通るようなので、これも削除すれば、通るように成ります。

 

私は、make -n >ld.sh とやって、ld.sh を編集しました。make でリンクに失敗しますが、そのあと、sh ld.sh とやると通るようになります。

 

ただし、制限があります。起動するときは、Windowsエクスプローラーから、起動しようとすると、dll などが見つかりませんエラーになります。mingw64 のターミナルから、./PC6001V とする必要性があります。

または、必要になるDLLファイルを、実行ファイルと同じところに、全部コピーしておくかですが、それも面倒ですね。

 

おそらく、ゆみたろさんは、なんらかの方法で、librav1e.a ファイルを作成して、リンクしているのか。。。?わかりませんが、ようやく、とりあえずの回避策は、見つけられました。。