Experimental Physics and Industrial Control System
Hi,
There have been messages about building EPICS base on a Linux host
recently. Since we are using Linux extensively I'd like to report on
the problems we encountered and explain the set-up we use at the
SLS. In addition to Linux we use solaris as a host and build on both
applications for the m68k and ppc architecture.
The problems that arise in this environment are due to not having a
WRS Tornado environment on Linux, the complexity of the CONFIG files
in EPICS and how gcc is set up. On Linux gcc and its cross-compilers
are used whereas on solaris we use the environment coming from WRS
with all its tools. Once built and installed it is rather painful to
move gcc around. I found it difficult to operate with GCC_EXEC_PREFIX
and different -B options especially when different host and cross
compilers were involved. So my recommendation is not to touch the
compilers anymore once they have been built.
Let me briefly describe our set-up. We use the vxWorks (WRS)
distribution to get the header files, vxWorks kernels and the
environment to built on the solaris host. It is set up in such a way
that we keep different target architectures separated (as recommended
by WRS) like
/some/directory/$(ARCH_CLASS)
with ARCH_CLASS defined in the CONFIG.Vx.$(T_A) files. So in
CONFIG_SITE we define
VX_DIR_YES = /soft/wind/1.0.1/$(ARCH_CLASS)
which becomes VX_DIR in CONFIG.Vx.
VX_DIR is used to get the header files and the kernels for both host
architectures (Linux/solaris).
Since the gcc cross compiler that comes from WRS needs a
GCC_EXEC_PREFIX (its current directory is different from where it was
originally built for by WRS) we override the cross compiler command in
a CONFIG_SITE.Vx as suggested by William Lupton
GCC = GCC_EXEC_PREFIX=$(GNU_LIB)/gcc-lib/ $(GNU_BIN)/cc$(CMPLR_SUFFIX) -nostdinc
So we don't have to give it explicitly in the different
CONFIG.Vx.$(T_A) files. The latter ones are not touched.
For Linux we use cross compilers build from the gcc distribution
(binutils 2.9.1 and gcc 2.8.1) and installed them in
/some/other/dir/$(ARCH_CLASS)
separated from the WRS distribution. In CONFIG_SITE.Vx.Linux we
switch the Gnu directory to point to these cross compilers keeping
VX_DIR as for solaris (in order to get the header files and the
vxWorks kernels)
VX_GNU=/tools/soft/$(ARCH_CLASS)
VX_GNU_BIN = $(VX_GNU)/bin
VX_GNU_LIB = $(VX_GNU)/lib
The variable WIND_HOST_TYPE is not defined for Linux in our case.
Of course, one might also create a 'symmetric' set-up with the cross
compilers for Linux under the same directory structure as the WRS
compilers i.e.
/some/dir/$(ARCH_CLASS/host/$(WIND_HOST_TYPE)
where WIND_HOST_TYPE has to be set accordingly. But we want WRS and
our cross compilers to be kept separated and/or don't like to move
kernels and header files around.
I hope this helps to clarify things a bit.
Cheers, Markus
--
Markus Janousch ([email protected])
Computing & Controls, SLS
Paul Scherrer Institute
CH-5232 Villigen-PSI
Switzerland
- Navigate by Date:
- Prev:
Re: devSup for Cockroft-Walton HV J. Frederick Bartlett ([email protected])
- Next:
memory problem with MEDM and CA pate
- Index:
1994
1995
1996
1997
1998
<1999>
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Apology for Error-Mails Ralph Lange
- Next:
memory problem with MEDM and CA pate
- Index:
1994
1995
1996
1997
1998
<1999>
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024