Windows Related EPICS Information

[SoftDev]   [LogFile]   [Cygwin]   [VisualC]   [Borland]   [Study]

Software Development on Windows

Cygwin and GNU Compiler with POSIX Support (cygwin-x86)
Cygwin Download Page

Cygwin Document Page

Some Hints to Develop Software on Windows with Cygwin (K.Furukawa, Dec.2003-Aug.2006)

Borland Compiler (win32-x86-borland)
Borland Compiler Download Page

There exists Japanized version as well, but the error messages are printed in Japanese.

Microsoft Compiler (win32-x86)
Of course compilers from Microsoft are supported.

A new free version of Visual C++ Express 2010 Edition was released.

A free version Visual C++ Express 2008 Edition can be utilized as well. However, you need to invoke the following command for cygwin make.
mv /cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.0A/bin/{RC.Exe,rc.exe}

An older free version, Visual C++ Express 2005 Edition and Windows Platform SDK can be utilized as well.

Other Compiler Possibilities
MinGW compiler (win32-x86-mingw) and Cygwin compiler without POSIX support (win32-x86-cygwin) are possible as well. But I don't use them.

Tools for EPICS build
In order to build EPICS you need one of the compiler suite from Microsoft, Borland or GNU (Cygwin). You need at least gnu-make and perl. If you have problems with gnu-make-3.81, please try to downgrade to 3.80, as 3.81 removed a support for windows path names. You may also need other unix tools possibly under Cygwin. See above hints for Cygwin.

Which Compiler to Choose
Machine codes generated by above compilers are basically the same. However, you cannot mix generated codes normally, since C/C++ language libraries are imcompatible.

If you have some driver software from venders, which asumes Microsoft libraries, you may have to choose Microsoft Compiler. (while win32-x86-mingw or win32-x86-cygwin may also work, cygwin-x86 may not work.)

If you already have some device supports, which were developed for Unix/POSIX environment, it may be easier to port onto Cygwin environment as it supports POSIX API.

Information on EPICS/Windows at APS

Information at APS

Log Files of My Building of EPICS 3.14 on Windows

(Dec.5.2003 for 3.14.4, Feb.6.2004 for 3.14.5, May.16.2005 for 3.14.7, Aug.15.2006 for May.3.2007,Feb.3.2008 for 3.14.9.)


Celeron 400MHz, 256MB RAM, Windows98-SE, Cygwin-1.5.5, gcc-3.3.1, bcc32-5.5, make-3.80, perl-5.8.2, tcsh-6.12.00 (for 3.14.4)
Pentium4 2.3GHz, 1GB RAM, Windows2000sp4, Cygwin-1.5.7, gcc-3.3.1, make-3.80, perl-5.8.2, tcsh-6.12.00 (for 3.14.5)
Pentium4 3GHz, 2GB RAM, WindowsXPsp2, Cygwin-1.5.20, gcc-3.4.4, make-3.80, perl-5.8.7, tcsh-6.14.00 (for,3.14.9)
Core2 Duo 2.33GHz, 2GB RAM, WindowsXPsp2, Cygwin-1.5.25, gcc-3.4.4, make-3.81, perl-5.8.8, tcsh-6.15.00 (for 3.14.9)
No Environmental variables are used other than EPICS_HOST_ARCH (and PATH) described below on Cygwin.

Source Files

download from APS and expand baseR3.14.5.tar.gz or baseR3.14.7.tar.gz or baseR3.14.8.2.tar.gz
no modifications are necessary

Building base-3.14.[45789] for cygwin-x86 (or win32-x86-cygwin)

(the platform name cygwin-x86 is used after 3.14.6, while the name win32-x86-cygwin was used previously.)

tar xf baseR3.14.[45789].tar.gz (or tar xzf baseR3.14.[45789].tar.gz)
cd base-3.14.[45789]/
set EPICS_BASE=`pwd`
setenv EPICS_HOST_ARCH `startup/`
cygwin-x86 (or win32-x86-cygwin before 3.14.6)
make clean uninstall
make |& tee ../ base-3.14.4-make-cygwin.txt (R3.14.4)
make |& tee ../ base-3.14.5-make-cygwin.txt (R3.14.5)
make |& tee ../ base-3.14.7-make-cygwin.txt (R3.14.7)
make |& tee ../ base- (R3.14.8.2)
make |& tee ../ base-3.14.9-make-cygwin.txt (R3.14.9)

Simple test

(since 3.14.9)

make runtests | & tee ../ base-3.14.9-test-cygwin.txt

(before 3.14.9)

set LOG='tee -a logfile.txt'
foreach f (*TestHost.exe epics*Test.exe)
echo |& $LOG
echo ### $f |& $LOG
time ./$f |& $LOG
(result for R3.14.5 is here)
(result for R3.14.7 is here)
(result for R3.14.8.2 is here)
cd ..

(not too bad.)

IOC application test

cd $EPICS_BASE/.. ; mkdir app ; cd app
$EPICS_BASE/bin/$EPICS_HOST_ARCH/ -t example myapp
$EPICS_BASE/bin/$EPICS_HOST_ARCH/ -i -t example myapp
Using target architecture cygwin-x86 (only one available)
The following applications are available
What application should the IOC(s) boot?
The default uses the IOC's name, even if not listed avove.
Application name?
make | & tee make-app-cygwin.log
make | & tee ../ app-3.14.9-make-cygwin.txt
cd iocBoot/iocmyapp/
../../bin/cygwin-x86/myapp.exe st.cmd
dbpr {record_name}
(now you can access your records over network via channel access.)

Building base-3.14.{9,11} for win32-x86 (Microsoft compiler)

(You need one of the Microsoft C++ compilers as described above. Several environment variables such as PATH, INCLUDE, LIB, etc are needed. My environment under csh for Visual C++ 2010 is here (vs10vars32.csh) and for Visual C++ 2008 is here (vs9vars32.csh) and for Visual C++ 2005 is here (vs8vars32.csh) as examples.)

setenv EPICS_HOST_ARCH win32-x86
make clean uninstall
make |& tee ../ base-3.14.9-make-vc8.txt (R3.14.9 and Visual C++ 2005)
make |& tee ../ base-3.14.9-make-vc9.txt (R3.14.9 and Visual C++ 2008)
make |& tee ../ base-3.14.11-make-vc9.txt (R3.14.11 and Visual C++ 2008)

make runtests | & tee ../ base-3.14.9-test-vc8.txt (R3.14.9 and Visual C++ 2005)
make runtests | & tee ../ base-3.14.9-test-vc9.txt (R3.14.9 and Visual C++ 2008)
make runtests | & tee ../ base-3.14.11-test-vc9.txt (R3.14.11 and Visual C++ 2008)

mkdir ../app ; cd ../app
../base-3.14.9/bin/$EPICS_HOST_ARCH/ -t example myapp
../base-3.14.9/bin/$EPICS_HOST_ARCH/ -i -t example myapp
(Currently, only a relative path to is supported. If you use an absolute path to, you have to edit the file RELEASE. Otherwise make will fail.)
make |& tee ../ app-3.14.9-make-vc8.txt (R3.14.9 and Visual C++ 2005)
make |& tee ../ app-3.14.9-make-vc9.txt (R3.14.9 and Visual C++ 2008)

it also went well

Building base-3.14.4 for win32-x86-borland (Borland compiler)

setenv EPICS_HOST_ARCH win32-x86-borland
make clean uninstall
make |& tee ../make-borland1.log
setenv PATH {$PATH}:/cygdrive/c/borland/bcc55/Bin
make |& tee ../make-borland2.log
mkdir /cygdrive/c/tmp
make |& tee ../make-borland3.log

it also went well

Please note that I don't use it much. Those are simply building tests.

EPICS Test Study on Windows on Oscilloscopes

Building EPICS on windows using MS Compiler and Developing Applications for Oscilloscopes

IOC for upgrading BPM DAQ software

IOC Application for BPM Data Aquisition

These describe EPICS/Windows environment on Oscilloscopes from Tektronix and LeCroy. These works were done by Dr. Jian Wang of USTC, China, and Dr. Yong Hu from Shanghai, China.
Since 2006, we have introduced more than 24 DPO7104's of Tektronix, with Windows-XP embeded, for BPM. They enabled 50Hz flavoured BPM data aquisition.

[Top]   [SoftDev]   [LogFile]   [Cygwin]   [VisualC]   [Borland]   [Study]

[Please Comment on This Page]
Kazuro Furukawa <>, Dec.8.2003-Dec.7.2010.
[ Linux ]   [ Tru64unix ]   [ Darwin ]  
[ Main ]   [ e-Linac-Int ]   [ e-Linac-Ext ]   [ KEKB ]   [ J-Parc-Controls ]   [ J-PARC ]   [ Accelerator ]   [ KEK ]   [ JAERI ]   [ EPICS ]