Compilation of Scilab Under GNU/Linux/Unix
Scilab is compilable with many compilers on many platforms.
Scilab can be compiled with. For the C language :
- Intel C Compiler
- Microsoft Visual
- Sun compiler
For fortran :
- Intel Fortran Compiler
- Microsoft Visual
- Sun compiler
How to compile Scilab 5.X ?
./configure make all make install
It is possible to compile only macros with the command :
and help with :
./configure has many options. The most useful are :
--prefix=/path/scilab : installation path of Scilab (here /path/scilab/)
--with-pvm : Activate PVM
--with-libxml2 : if libXML is not in the path, this information can be provided in the path.
--disable-static : Do not compile a static version of Scilab
--enable-debug : Print warning and add the debug (-g) option
How to compile just a module ?
Go into the directory of the module and type make.
For example, if you want to rebuild the module boolean, this will do :
cd modules/boolean make
How does it work ?
Example (TO be developed and commented)
files = ['npend.o','np.o','ener.o','dlslv.o' ]; ilib_for_link(['npend';'np';'ener'],files,,"f");
All my sources are compiled twice, it is normal ?
Yes, it is perfectly normal. Each file is compiled twice : one the static and the other for the shared. If you want to disable it, just add the parameter --disable-static (or --disable-shared which is btw not a good idea) when you call ./configure.
I made a change in a library and it relinked other libraries, why that ?
There are dependencies between libraries. If the compilation process detects that the library which it depends on has changed, it will recompile. It is done because a symbol (ex : function name) may have been changed and this could lead to an undefined symbol.
When I try to regenerate Makefile.in and/or configure, I got a few warnings
If you have something like :
libs/lapack/Makefile.am:295: user target `libdummy_lapack_la-dlamch.lo' defined here... /usr/share/automake-1.9/am/depend2.am: ... overrides Automake target `libdummy_lapack_la-dlamch.lo' defined here
It is (unfortunately) normal. We have to override compilation flags in order to deactivate optimization for a few files...
I get this error when I am compiling lapack.
xerbla.o(.text+0x3a): undefined reference to `for_write_seq_fmt' xerbla.o(.text+0x57): undefined reference to `for_write_seq_fmt_xmit' xerbla.o(.text+0x6b): undefined reference to `for_stop_core'
How can I fix it ?
This may come from the fact that you may have tried to compile scilab with an Intel Compiler and then switch to a GNU compiler. (difference between lib included or not).
I get this problem when I try to compile with Intel compiler. What the hell is that ?
ifort: Command line warning: ignoring unknown option '-relax' ifort: Command line warning: ignoring unknown option '-soname' IPO link: can not find "libblas.so.0" ifort: error: problem during multi-file optimization compilation (code 1)
Some version of libtool have problem with Intel compilers. Try a more recent version (or the CVS one). Caution : you shouldn't have this error unless you are altering configure.ac or Makefile.am
When I compile Scilab, I get a ''undefined versioned symbol name _LIB_VERSION@@GLIBC_2.0''
This is a crappy problem on some version of the glibc. Usually, -lieee have to place prior to -lm during the linking. See : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=51267 As libtool compute automatically the order of loading of library, it is hard to change it. Please consider update your version of the glibc.
When I compile Scilab, I get a ''undefined reference to getarg_'' or ''undefined reference to iargc_''
It is quite unclear but we had this problem once when we tried to compile Scilab using g++ to compile C sources. Use a C compiler to compile C code and it should fixed the problem.
A workaround is to use the option --with-gfortran. Thanks to Dr P. Kinsler & Theodore Kilgore for providing it.
When I launch the ./configure, it says that it cannot find some Java packages
You should get this kind of message:
./configure [...] checking flexdock... no configure: error: Could not find or use the Java package/jar flexdock used by Scilab Gui (looking for package org.flexdock.docking.DockingManager)
Have a look on this page: Dependencies of Scilab 5.X.
Download the jar and put them in SCI/thirdparty/; we are also looking in the default Java paths (/usr/share/java, /usr/lib/java...). If a path is missing, don't hesitate to report it.
Please note that this could also means that we haven't been able to import the Java package in our quick test (usually, means that you have a bad version).