人気ブログランキング | 話題のタグを見る

雑多な趣味の記録帳

tom01h.exblog.jp

Verilator で Windows 用の バイナリを作る

こんなの出来て嬉しいかは不明ですが、Verilatorを使ってWindows用のシミュレータを作ります。Windows用のVerilatorじゃないですよ。ググったけど見つからなくて、C++のコンパイラさえWindows用なら良いかと思ったのですが、クロスコンパイラで十分ってことに気付きました。
まずは、ubuntu用のWindows向けのクロスコンパイラをインストールします。
$ sudo apt install mingw-w64
Verilatorは/usr/local/share/verilator/include/verilated.mkでいろいろ設定しているみたいなので、ひとまずワークにコピーしてきます。そして、Verilatorが自動で作るMakefileを、先のファイルを参照するように変更します。
# Include global rules
#include $(VERILATOR_ROOT)/include/verilated.mk
include ../verilated.mk
verilated.mkはこんな感じ。
CXX = x86_64-w64-mingw32-g++
LINK = x86_64-w64-mingw32-g++
AR = x86_64-w64-mingw32-ar
RANLIB = x86_64-w64-mingw32-ranlib
libstdc++-6.dllとlibgcc_s_sjlj-1.dllがないって言われますね。ここを参考にしますが、スタティックリンクの方法を探ります。ライブラリの再配布条件には注意してくださいね。
Verilatorが自動で作るMakefile
$(LINK) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@ $(LIBS) $(SC_LIBS) -static-libstdc++ -static-libgcc 2>&1 | c++filt
verilated.mk
##### C/H builds

LIBS += -lm -lstdc++
これで動きます。

by tom01h | 2017-06-09 22:18