Skip to main content

Compiling win32 binaries on linux

Old habits are hard to be dropped.

As a long term linux user I fell much more comfortable using my old emacs text editor with a good old "green on black" Xterm terminal console window.

So we have some legacy code here on my current job, those which must run also on windows. I was making some improvements on it, porting to use wx-widgets, compiling and using it on linux. But some windows users started to want those improvements on their widows versions. As the only WX programmer around, I was the only person able to compile the windows version. As I think future improvements would also be wanted by the windows users, I decided to deploy a windows wxDevCPP installation on wine on my linux workstation.

Well the first steps are simple:
  1. First get a wx-DevCPP installation executable on
  2. Install it using wine
  3. Open your .dev files on wxDev
  4. Build it
Now you have a Makefile.win, which can be used to directly compile win32 binaries.
A batch file could also be written to make things easy:
compile.bat
@echo off
set PATH=%PATH%;C:\Program Files\Dev-Cpp\bin
c:\Program Files\Dev-Cpp\bin\mingw32-make -f Makefile.win clean
c:\Program Files\Dev-Cpp\bin\mingw32-make -f Makefile.win

The command "wine cmd" can be used to enter on a windows command line console. In this console one just need to call the batch file (compile.bat).
A special win tag can be added to the linux Makefile, so one can use a make win directly from the linux console:
win:
wineconsole --backend=curses compile.bat
And that is it, now to build a linux binary one just need to type make, and for a windows binary, make win.
This procedure is suitable for small projects, I haven't tested with big projects.

Comments

Popular posts from this blog

uSleep on windows (win32)

I am facing a terrible issue regarding timing on windows. Googling arround, I've found those infos: Using QueryPerformanceCounter and QueryPerformanceFrequency APIs in Dev-C++ ( http://yeohhs.blogspot.com/2005/08/using -queryperformancecounter-and_13.html ) QueryPerformanceCounter() vs. GetTickCount() http://www.delphifaq.com/faq/delphi_windows_API/f345.shtml How to time a block of code http://www.cryer.co.uk/brian/delphi/howto_time_code.htm And Results of some quick research on timing in Win32 http://www.geisswerks.com/ryan/FAQS/timing.html With that I'm trying to write something like a uSleep function for windows: # include<windows.h> void uSleep ( int waitTime){ __int64 time1 = 0, time2 = 0, sysFreq = 0; QueryPerformanceCounter((LARGE_INTEGER *)&time1); QueryPerformanceFrequency((LARGE_INTEGER *)&freq); do { QueryPerformanceCounter((LARGE_INTEGER *)&time2); // }while((((time2-time1)*1.0)/sysFreq)<waitTime); } while ( (time2-time1) <waitTime); } T

Soft body deformation

The wikipedia has a short entry on " Soft body dynamics " but it cites this interesting framework called SOFA. "SOFA [ 1 ] is an Open Source framework primarily targeted at real-time physical simulation , with an emphasis on medical simulation. It is mostly intended for the research community to help develop newer algorithms, but can also be used as an efficient prototyping tool or as a physics engine ." [1] It is also multi-platform. As soon as I have some test written, I will put some shots here. [1] SOFA (Simulation Open Framework Architecture). (2009, March 26). In Wikipedia, The Free Encyclopedia . Retrieved 14:01, May 7, 2009, from http://en.wikipedia.org/w/index.php?title=SOFA_(Simulation_Open_Framework_Architecture)&oldid=279736872

More trickery with gnuplot dumb terminal

In my post " Plotting memory usage on console " the chart doesn't pan the data. Now, using a named pipe, the effect got a little bit nicer. First, we have to run the memUsage.sh script to get a file filled with memory usage info: ./memUsage.sh > memUsage.dat & Then we have to create a named pipe: mkfifo pipe Now we have to run another process to tail only the last 64 lines from the memUsage.dat while [ 1 ]; do tail -64 memUsage.dat> pipe; done & And now we just have to plot the data from the pipe: watch -n 1 'gnuplot -e "set terminal dumb;p \"pipe\" with lines"' And that is it!