DebianでWindowsバイナリのクロスコンパイル
WindowsにMSYSをインストールしつつ、Emacsか適当なエディタを入れたりするのも大変だなとふと思ったので、メインで使っているDebianからWindowsのプログラムを作る。
http://pukiwiki.tuntunkun.com/index.php?%B8%C0%B8%EC%2FWindows%2F%A5%AF%A5%ED%A5%B9%A5%B3%A5%F3%A5%D1%A5%A4%A5%E9
ここや
http://repse.blogspot.jp/2008/07/mingw-colinux-debian-opengl.html
ここを参考に。
aptitude install mingw-w64
これで環境が手に入るので、早速ソースを書く。
SRCS = main.c OBJS = $(SRCS:.c=.o) TARGET = main.exe INSTALL_DIR = ~/vmware/XP/mingw/test/ CC = i586-mingw32msvc-gcc CFLAGS = -O4 -Wall LDFLAGS = -mwindows .PHONY: all all: $(TARGET) $(TARGET): $(OBJS) $(CC) $(CFLAGS) -o $(TARGET) $(OBJS) $(LDFLAGS) .c.o: nkf -Us $< > $(subst .c,_sjis.c,$<) $(CC) $(CFLAGS) -o $@ -c $(subst .c,_sjis.c,$<) .PHONY: clean clean: rm -f $(TARGET) rm -f $(OBJS) rm -f *_sjis.c rm -f *~ install: all cp -f $(TARGET) $(INSTALL_DIR)
main.c
#include <windows.h> int main(int argc, char **argv){ MessageBox(NULL, "こんにちは世界!", "メッセージボックス", MB_OK); return EXIT_SUCCESS; }
makeでビルド完了。
Debianでも動作確認したいのでwineを入れる。
wine main.exe It appears that libnss-mdns is installed on your system, but lib32nss-mdns is not. Please note that Wine will not be able to access the Internet unless you either install lib32nss-mdns (or ia32-libnss-mdns), or uninstall libnss-mdns.
エラーが出た。
aptitude install lib32nss-mdns
これで完了。