-
Notifications
You must be signed in to change notification settings - Fork 0
/
INSTALL
650 lines (485 loc) · 32.1 KB
/
INSTALL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* This file is part of the program and library *
* SCIP --- Solving Constraint Integer Programs *
* *
* Copyright (C) 2002-2019 Konrad-Zuse-Zentrum *
* fuer Informationstechnik Berlin *
* *
* SCIP is distributed under the terms of the ZIB Academic License. *
* *
* You should have received a copy of the ZIB Academic License *
* along with SCIP; see the file COPYING. If not email to [email protected]. *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
We provide two different systems to compile the code: the traditional Makefile
system and the newer CMake build system. Be aware that generated libraries and
binaries of both systems might be different and incompatible. For further
information please refer to the online documentation of SCIP.
Installation description using CMake
====================================
The easiest way to install SCIP is to use the SCIP Optimization Suite, which
contains SCIP, SoPlex, and ZIMPL. For that we refer to the INSTALL file of
the SCIP Optimization Suite (in case of the SCIP Optimization Suite there is
no need to specify any directories, the compiling process is fully
automated).
Compiling SCIP directly can be done as follows:
1) unpack the tarball: "tar xvzf scip-x.y.z.tgz"
2) change into the directory: "cd scip-x.y.z"
3) create a new directory: "mkdir build"
4) change directories: "cd build"
4) configure the build: "cmake .."
5) start compiling SCIP: "make"
6) (recommended) check build: "make check" or "ctest"
7) (optional) install SCIP: "make install"
custom installation dir: "cmake .. -DCMAKE_INSTALL_PREFIX=<install/dir>"
CMake checks for available third-party libraries like GMP or ZLIB and sets up
the configuration accordingly.
There are multiple options to customize the configuration. You can list them
using "cmake .. -LH" and set them by running "cmake .. -D<option>=<value>".
Options can be chained together or be specified in subsequent calls
to cmake. The existing configuration will be updated or extended.
To specify a custom path to a library you may specify "-D<name>_DIR=<path>",
e.g., "cmake .. -DSOPLEX_DIR=<path/to/SoPlex/build/or/install>".
Please refer to the online documentation and the FAQ section for further information.
Windows instructions
--------------------
To build SCIP on Windows you may use the CMake GUI to specify the path to SCIP
and the desired location for the build. Available options are listed and can
be modified to suit your needs. After the configuration step is done, open
the generated Visual Studio solution file and compile it.
Alternatively, you may use the command line to configure and build SCIP:
1) create a "build" directory: "cmake -H. -Bbuild"
2) build a configuration: "cmake --build build --config Release [Debug]"
Installation description with Makefile
=======================================
For Linux and Mac, reading the section "Brief installation description"
should usually be enough. If this is not the case, you can find the "Detailed
installation description" below as well as some examples.
We recommend gcc version 4.8 or later.
Content
-------
I Brief installation description:
II Detailed installation description:
III Examples
I Brief installation description
--------------------------------
The easiest way to install SCIP is to use the SCIP Optimization Suite, which
contains SCIP, SoPlex, and ZIMPL. For that we refer to the INSTALL file of
the SCIP Optimization Suite (In case of the SCIP Optimization Suite, there is
no need to specify any directories, the compiling process is fully
automated).
Compiling SCIP directly can be done as follows:
1) unpack the tarball "tar xvzf scip-x.y.z.tgz"
2) change into the directory "cd scip-x.y.z"
3) start compiling SCIP "make"
3) (recommended) check your SCIP installation "make test"
4) (optional) install the header, libraries, and binary, e.g.,
"make install INSTALLDIR="/usr/local/"
On your first compilation you will be asked for some soft-link targets,
depending on the LP solver you want to use. Usually, SCIP needs the
following information
(a) the directory where the include files of the LP solver are located
(b) the library file(s) "lib*.a" or/and "lib*.so"
Beside that, SCIP needs similar soft-link targets for ZIMPL
(a) the directory where the include files of ZIMPL are located
(b) the library file(s) "lib*.a" or/and "lib*.so"
You will need either the .a or the .so files and can skip the others by
just pressing return.
The most common compiling issue is that some libraries are missing on
your system or that they are outdated. SCIP by default requires the
following packages (with usual names for Linux systems in
parentheses):
- zlib (libz-dev)
- gmp (libgmp-dev),
- readline (libreadline-dev), and
- ncurses (libncurses-dev)
Note that under Linux-based systems, you need to install the
developer-versions of gmp/zlib/readline, in order to also have the
header-files available.
If you are not able or do not want to install these packages, try compiling with:
make ZLIB=false READLINE=false GMP=false.
II Detailed installation description
------------------------------------
In the following, some of the names depend on your machine and your
compilation settings:
- $(OSTYPE): the operating system
the string returned by "uname -s" in lower case with the following
replacements:
- "cygwin*" is replaced by only "cygwin"
- "irix??" is replaced by only "irix"
- "windows*" is replaced by only "windows"
- "mingw*" is replaced by only "mingw"
- $(ARCH): the architecture
the string returned by "uname -m", modified by the following
rules to subsume some architectures:
- "sun??" is replaced by "sparc"
- "i?86", "i86pc", and "[0-9]86" are replaced by "x86"
- "amd64" is replaced by "x86_64"
- "IP??" is replaced by "mips"
- "9000????" is replaced by "hppa"
- "Power Macintosh" is replaced by "ppc"
- "00??????????" is replaced by "pwr4"
- $(COMP): the compiler
"gnu", "intel", "compaq", "sun", "insure", ... (see make/ directory)
- $(OPT): the optimization level of compilation
"dbg", "opt", or "prf"
- $(LPS): the LP solver to use
"spx2", "spx", "clp", "cpx", "xprs", "msk", "grb", "qso", "none"
- $(EXPRINT): the expressions interpreter (code that computes derivatives and hessians) to use
"none", "cppad"
- $(SYM): the graph automorphism code (needed to handle symmetries) to use
"none", "bliss"
For example, if you want to install SCIP on a Linux system with a x86 processor
using the gnu compiler in debug mode, using Soplex version >= 1.4.0 as LP solver,
and neither an expressions interpreter nor symmetry handling techniques you would
have the following names:
- $(OSTYPE) = linux
- $(ARCH) = x86
- $(COMP) = gnu
- $(OPT) = dbg
- $(LPS) = spx
- $(EXPRINT) = none
- $(SYM) = none
-----------------------------------------------------------------------------
Here is what you have to do to get SCIP running:
1. Compile the library and the solver program:
In your SCIP main directory, enter "make [options]" with the following options:
- "OPT=opt" to use optimized compilation mode (default)
- "OPT=dbg" to use debug compilation mode
- "OPT=prf" to use performance analysis compilation mode
- "LPS=spx" to use SoPlex as LP solver (based on the new interface available since version 2.0, default)
- "LPS=spx1" to use SoPlex as LP solver (based on the old interface for versions >= 1.4)
- "LPS=cpx" to use CPLEX as LP solver
- "LPS=xprs" to use XPRESS as LP solver
- "LPS=msk" to use MOSEK as LP solver
- "LPS=clp" to use CLP as LP solver
- "LPS=grb" to use Gurobi as LP solver
- "LPS=qso" to use QSopt as LP solver
- "LPS=none" to use no LP solver
- "COMP=gnu" to use GNU c/c++ compiler (default)
- other compilers are available (see make/ directory)
- "ZLIB=true" to use zlib and enable reading of compressed files (default)
- "ZLIB=false" disable zlib usage
- "READLINE=true" to enable readline library for interactive shell (default)
- "READLINE=false" to disable readline library
- "GMP=true" to use the GMP library for exact counting and Zimpl support (default)
- "GMP=false" to disable GMP usage; note that GMP=false is not compatible with ZIMPL=true since ZIMPL needs the GMP library
- "ZIMPL=true" to enable ZIMPL file reader (needs ZIMPL and GMP to be installed, see 2. (g))
- "ZIMPL=false" to disable ZIMPL file reader
- "ZIMPL=auto" to automatically enable ZIMPL support if and only if the GMP library is available (default)
- "FILTERSQP=true" to enable FilterSQP interface
- "FILTERSQP=false" to disable FilterSQP interface (default)
- "IPOPT=true" to enable IPOPT interface (needs IPOPT >= 3.11)
- "IPOPT=false" to disable IPOPT interface (default)
- "WORHP=true" to enable WORHP interface (needs WORHP >= 1.10)
- "WORHP=false" to disable WORHP interface (default)
- "EXPRINT=cppad" to use CppAD as expressions interpreter (default)
- "EXPRINT=none" to use no expressions interpreter
- "GAMS=true" to enable reading of GAMS model files (needs GAMS; only for models that do one solve)
- "GAMS=false" to disable GAMS interface (default)
- "VERBOSE=false" to suppress display of compiler and linker invocations (default)
- "VERBOSE=true" to display compiler and linker invocations
- "SHARED=false" to suppress shared libraries
- "SHARED=true" to create shared libraries
- "SYM=bliss" to use bliss to compute symmetries of a mixed integer program
- "SYM=none" to disable symmetry handling in mixed integer programs
On some machines, you should use gmake instead of make.
On your first compilation you will be asked for some soft-link targets, depending on the
LP solver you want to use. Usually, SCIP needs the following information
(a) the directory where the include files of the LP solver
(b) the library file(s) "lib*.a" or/and "lib*.so"
You will need either the .a or the .so files and can skip the others by just pressing return.
On MAC systems, GMP is often not installed in the library and include paths, e.g. in /sw/include
and /sw/lib. In this case, you have to add the paths explicitly. In the above example add the settings
USRFLAGS=-I/sw/include USRCPPFLAGS=-I/sw/include USRCFLAGS=-I/sw/include USRLDFLAGS=-L/sw/lib.
2. Installing SCIP
After compiling you can install the headers, the libraries, and the binay. Therefore you use the command:
make install INSATLLDIR=<dirctory>
- "INSTALLDIR=" directory as install directory (default)
- "INSTALLDIR=/usr/local"
to install the headers (/usr/local/include/), the libraries (/usr/local/lib/),
and binary (/usr/loacl/bin/) in the directory /usr/local
For un-installing SCIP there exist the target "uninstall" which can be used in the same way as "install".
III Examples
------------
### Example 1 (defaults: SoPlex, with ZIMPL support):
Typing "make" uses SoPlex as LP solver and includes support for the modeling language ZIMPL.
You will be asked the following questions on the first call to "make" (example answers are already given):
---
make[1]: Entering directory `/sw/scip'
** creating softlinks: LPS=spx OSTYPE=linux ARCH=x86 COMP=gnu SUFFIX= ZIMPL=true ZIMPLOPT=opt IPOPT=false IPOPTOPT=opt EXPRINT=cppad
** creating directory "lib/zimplinc"
** missing soft-link "lib/spxinc"
** enter soft-link target file or directory for "lib/spxinc" (return if not needed): /sw/soplex/src
-> creating softlink "lib/spxinc" -> "/sw/soplex/src"
** missing soft-link "lib/libsoplex.linux.x86.gnu.a"
** enter soft-link target file or directory for "lib/libsoplex.linux.x86.gnu.a" (return if not needed): /sw/soplex/lib/libsoplex.linux.x86.gnu.opt.a
-> creating softlink "lib/libsoplex.linux.x86.gnu.a" -> "/sw/soplex/lib/libsoplex.linux.x86.gnu.opt.a"
** missing soft-link "lib/libsoplex.linux.x86.gnu.so"
** this soft-link is not necessarily needed since "lib/libsoplex.linux.x86.gnu.a" already exists - press return to skip
** enter soft-link target file or directory for "lib/libsoplex.linux.x86.gnu.so" (return if not needed):
-> skipped creation of softlink "lib/libsoplex.linux.x86.gnu.so". Call "make links" if needed later.
** missing soft-link "lib/zimplinc/zimpl"
** enter soft-link target file or directory for "lib/zimplinc/zimpl" (return if not needed): /sw/zimpl/src
-> creating softlink "lib/zimplinc/zimpl" -> "/sw/zimpl/src"
** missing soft-link "lib/libzimpl.linux.x86.gnu.a"
** enter soft-link target file or directory for "lib/libzimpl.linux.x86.gnu.a" (return if not needed): /sw/zimpl/lib/libzimpl.linux.x86.gnu.opt.a
-> creating softlink "lib/libzimpl.linux.x86.gnu.a" -> "/sw/zimpl/lib/libzimpl.linux.x86.gnu.opt.a"
** missing soft-link "lib/libzimpl.linux.x86.gnu.so"
** this soft-link is not necessarily needed since "lib/libzimpl.linux.x86.gnu.a" already exists - press return to skip
** enter soft-link target file or directory for "lib/libzimpl.linux.x86.gnu.so" (return if not needed):
-> skipped creation of softlink "lib/libzimpl.linux.x86.gnu.so". Call "make links" if needed later.
make[1]: Leaving directory `/sw/scip'
---
### Example 2 (CPLEX, no ZIMPL):
Typing "make LPS=cpx ZIMPL=false" uses CPLEX as LP solver. You will be
asked the following questions on
the first call to "make" (example answers are already given):
---
make[1]: Entering directory `/sw/scip'
** creating softlinks: LPS=cpx OSTYPE=linux ARCH=x86 COMP=gnu SUFFIX= ZIMPL=false
** missing soft-link "lib/cpxinc"
** enter soft-link target file or directory for "lib/cpxinc" (return to skip): /sw/cplex/include/ilcplex
-> creating softlink "lib/cpxinc" -> "/sw/cplex/include/ilcplex"
** missing soft-link "lib/libcplex.linux.x86.gnu.a"
** enter soft-link target file or directory for "lib/libcplex.linux.x86.gnu.a" (return to skip): /sw/cplex/lib/x86_rhel4.0_3.4/static_pic/libcplex.a
-> creating softlink "lib/libcplex.linux.x86.gnu.a" -> "/sw/cplex/lib/x86_rhel4.0_3.4/static_pic/libcplex.a"
** missing soft-link "lib/libcplex.linux.x86.gnu.so"
** enter soft-link target file or directory for "lib/libcplex.linux.x86.gnu.so" (return to skip):
-> skipped creation of softlink "lib/libcplex.linux.x86.gnu.so". Call "make links" if needed later.
make[1]: Leaving directory `/sw/scip'
---
### Example 3 (CLP, IPOPT, no ZIMPL):
Typing "make LPS=clp ZIMPL=false IPOPT=true" uses CLP as LP solver, and activates
the interface to IPOPT. You will be asked the following questions on
the first call to "make" (example answers are already given):
---
make[1]: Entering directory `/sw/scip'
- Current settings: LPS=clp OSTYPE=linux ARCH=x86_64 COMP=gnu SUFFIX= ZIMPL=false ZIMPLOPT=opt IPOPT=true IPOPTOPT=opt EXPRINT=cppad
* SCIP needs some softlinks to external programs, in particular, LP-solvers.
* Please insert the paths to the corresponding directories/libraries below.
* The links will be installed in the 'lib' directory.
* For more information and if you experience problems see the INSTALL file.
-> "clp.*" is a directory containing the Clp installation, i.e., "clp.*/include/coin/ClpModel.hpp" should exist.
-> "ipopt.*" is a directory containing the ipopt installation, i.e., "ipopt.*/include/coin/IpIpoptApplication.hpp", "ipopt.*/lib/libipopt*", ... should exist.
- preparing missing soft-link "lib/clp.linux.x86_64.gnu.opt":
> Enter soft-link target file or directory for "lib/clp.linux.x86_64.gnu.opt" (return if not needed):
> /sw/Clp-1.11/build
-> creating softlink "lib/clp.linux.x86_64.gnu.opt" -> "/sw/Clp-1.11/build"
- preparing missing soft-link "lib/ipopt.linux.x86_64.gnu.opt":
> Enter soft-link target file or directory for "lib/ipopt.linux.x86_64.gnu.opt" (return if not needed):
> /sw/ia64_lx26/ipopt-3.12.0/
-> creating softlink "lib/ipopt.linux.x86_64.gnu.opt" -> "/sw/ia64_lx26/ipopt-3.12.0/"
make[1]: Leaving directory `/sw/scip'
---
### Example 4 (default: SoPlex, IPOPT, WORHP, FILTERSQP):
Typing "make IPOPT=true WORHP=true FILTERSQP=true" uses SoPlex as LP solver, and activates
the interfaces to IPOPT, WORHP, and FilterSQP. You will be asked the following questions on
the first call to "make" (example answers are already given):
- Current settings: LPS=spx2 OSTYPE=linux ARCH=x86_64 COMP=gnu SHARED=false SUFFIX= ZIMPL=false ZIMPLOPT=opt IPOPT=true IPOPTOPT=opt FILTERSQP=true EXPRINT=cppad GAMS=false
* SCIP needs some softlinks to external programs, in particular, LP-solvers.
* Please insert the paths to the corresponding directories/libraries below.
* The links will be installed in the 'lib/include' and 'lib/static' directories.
* For more information and if you experience problems see the INSTALL file.
-> "spxinc" is the path to the SoPlex "src" directory, e.g., "<SoPlex-path>/src".
-> "libsoplex.*" is the path to the SoPlex library, e.g., "<SoPlex-path>/lib/libsoplex.linux.x86.gnu.opt.a"
-> "ipopt.linux.x86_64.gnu.opt" is a directory containing the ipopt installation, i.e., "ipopt.linux.x86_64.gnu.opt/include/coin/IpIpoptApplication.hpp", "ipopt.linux.x86_64.gnu.opt/lib/libipopt*", ... should exist.
-> "libfiltersqp.linux.x86_64.gnu.*" is the path to the filterSQP library.
-> "libbqpd.linux.x86_64.gnu.*" is the path to the BQPD library.
-> "worhp.linux.x86_64.gnu.opt" is a directory containing the WORHP installation, i.e., "worhp.linux.x86_64.gnu.opt/include/worhp/worhp.h" should exist.
> Enter soft-link target file or directory for "lib/static/ipopt.linux.x86_64.gnu.opt" (return if not needed):
> /sw/ipopt-3.12.5
-> creating softlink "lib/static/ipopt.linux.x86_64.gnu.opt" -> "/sw/ipopt-3.12.5"
> Enter soft-link target file or directory for "lib/static/libfiltersqp.linux.x86_64.gnu.a" (return if not needed):
> /sw/libfiltersqp.a
-> creating softlink "lib/static/libfiltersqp.linux.x86_64.gnu.a" -> "/sw/libfiltersqp.a"
> Enter soft-link target file or directory for "lib/static/libbqpd.linux.x86_64.gnu.a" (return if not needed):
> /sw/libbqpd.a
-> creating softlink "lib/static/libbqpd.linux.x86_64.gnu.a" -> "/sw/libbqpd.a"
> Enter soft-link target file or directory for "lib/static/worhp.linux.x86_64.gnu.opt" (return if not needed):
> /sw/worhp-2.0
-> creating softlink "lib/static/worhp.linux.x86_64.gnu.opt" -> "/sw/worhp-2.0"
make[1]: Leaving directory `/sw/scip'
---
Note on how to (locally) install CLP:
- create a target directory for the installation, e.g. "clp-build" (this is the directory SCIP has to link to)
- from within "clp-build", run the "configure" script of coin-Clp, followed by "make install"
If you ever need to modify the soft-link targets, delete the soft-links in the "lib/" subdirectory
and enter "make links" to generate them again.
After the soft-links have been created, the compilation of the source files should start.
---
### Example 5 (default: SoPlex, SYM):
Typing "make SYM=bliss" uses SoPlex as LP solver, and activates
the symmetry handling routines of SCIP. Symmetry is computed by using the graph automorphism
code bliss. You will be asked the following questions on the first call to "make"
(example answers are already given):
- Current settings: SYM=bliss
* SCIP needs some softlinks to external programs, in particular, LP-solvers.
* Please insert the paths to the corresponding directories/libraries below.
* The links will be installed in the 'lib/include' and 'lib/static' directories.
* For more information and if you experience problems see the INSTALL file.
-> "cpxinc" is the path to the CPLEX "include" directory, e.g., "<CPLEX-path>/include/ilcplex".
-> "libcplex.*.a" is the path to the CPLEX library, e.g., "<CPLEX-path>/lib/x86-64_linux/static_pic/libcplex.a"
-> "libcplex.*.so" is the path to the CPLEX library, e.g., "<CPLEX-path>/bin/x86-64_linux/libcplex1263.so"
-> "blissinc" is the path to the BLISS directory, e.g., "<BLISS-path>".
-> "libbliss.*.a" is the path to the BLISS library, e.g., "<BLISS-path>/libbliss.a"
-> "libbliss.*.so" is the path to the BLISS library, e.g., "<BLISS-path>/libbliss.so"
> Enter soft-link target file or directory for "lib/include/bliss" (return if not needed):
> /sw/bliss
-> creating softlink "lib/include/bliss" -> "/sw/bliss"
> Enter soft-link target file or directory for "lib/static/libbliss.linux.x86_64.gnu.a" (return if not needed):
> /sw/bliss/libbliss.a
-> creating softlink "lib/static/libbliss.linux.x86_64.gnu.a" -> "/sw/bliss/libbliss.a"
make[1]: Leaving directory `/sw/scip'
---
Note on how to (locally) install bliss:
- create a target directory for the installation
- compile the bliss code within this directory
If you ever need to modify the soft-link targets, delete the soft-links in the "lib/" subdirectory
and enter "make links" to generate them again.
After the soft-links have been created, the compilation of the source files should start.
---
Compilation problems:
---------------------
If the soft-link query script does not work on your machine, read step 2 for instructions on manually
creating the soft-links.
If you get an error message of the type
"make: *** No rule to make target `lib/???', needed by `obj/O.linux.x86.gnu.opt/lib/scip/???.o'. Stop."
the corresponding soft-link was not created or points to a wrong location.
Check the soft-link targets in the "lib/include", "lib/static", "lib/shared" subdirectories. Try to delete all soft-links from those directories
and call "make links" to generate them again. If this still fails, read step 2 for instructions on manually
creating the soft-links.
If you get an error message of the type
"make: *** No rule to make target `make/make.?.?.?.?.?'. Stop.",
the corresponding machine dependent makefile for your architecture and compiler is missing.
Create one of the given name in the "make/" subdirectory. You may take
"make/make.linux.x86.gnu.opt" or any other file in the make subdirectory as example.
The readline library seems to differ slightly on different OS distributions. Some versions
do not support the remove_history() call.
In this case, you have to either add "-DNO_REMOVE_HISTORY" to the FLAGS in the
appropriate make/make.* file, or to compile with "make USRFLAGS=-DNO_REMOVE_HISTORY".
Make sure, the file "src/scip/dialog.c" is recompiled.
If this doesn't work either, disable the readline library with "make READLINE=false".
On some systems, the sigaction() method is not available.
In this case, you have to either add "-DNO_SIGACTION" to the FLAGS in the
appropriate make/make.* file, or to compile with "make USRFLAGS=-DNO_SIGACTION".
Make sure, the file "src/scip/interrupt.c" is recompiled.
On some systems, the rand_r() method is not available.
In this case, you have to either add "-DNO_RAND_R" to the FLAGS in the
appropriate make/make.* file, or to compile with "make USRFLAGS=-DNO_RAND_R".
Make sure, the file "src/scip/misc.c" is recompiled.
On some systems, the strtok_r() method is not available.
In this case, you have to either add "-DNO_STRTOK_R" to the FLAGS in the
appropriate make/make.* file, or to compile with "make USRFLAGS=-DNO_STRTOK_R".
Make sure, the file "src/scip/misc.c" is recompiled.
On some systems, the strerror_r() method is not available.
In this case, you have to either add "-DNO_STRERROR_R" to the FLAGS in the
appropriate make/make.* file, or to compile with "make USRFLAGS=-DNO_STRERROR_R".
Make sure, the file "src/scip/misc.c" is recompiled.
On some systems, the option [-e] is not available for the read command.
You have to compile with READ=read.
In some situations, it may be necessary to adjust the flags for
linking against Clp. SCIP's Makefile tries to find the file
"clp_addlibs.txt", which specifies the needed libraries. The first
thing you should check is whether "clp_addlibs.txt" is present at
in path "libclp.*/share/coin/doc/Clp/" (you may have to correct
this path for some Clp versions). If this file is not present in
your Clp version, SCIP tries to guess the paths and libraries: it
assumes that Blas and Lapack are installed as system libraries
(libblas.a, liblapack.a) and are not build into the CoinUtils
library. If that is different in your build of Clp, you may have to
remove $(LINKCXX_l)lapack$(LINKLIBSUFFIX) from the LPSLDFLAGS in
Makefile or make.project. Also removing
$(LINKCXX_l)bz2$(LINKLIBSUFFIX) may help in some cases.
If you encounter other compiler or linker errors, you should recompile with
"make VERBOSE=true ..." in order to get the full compiler invocation. This might help to
fix the corresponding machine dependent makefile in the make subdirectory.
3. Instructions for manually creating the soft-links, if the query script fails:
Create necessary soft-links in the "lib/static" and "lib/include/" subdirectories of SCIP:
(a) to use SOPLEX (Version >= 1.4.0)
- ln -s <path to SOPLEX' *.h files> <path to SCIP>/lib/include/spxinc
- ln -s <file libsoplex.[...].a> <path to SCIP>/lib/static/libsoplex.$(OSTYPE).$(ARCH).$(COMP).a
for each operating system and architecture to use
(e.g. "cd scip; ln -s ../soplex/lib/libsoplex.linux.x86_64.gnu.opt.a lib/static/libsoplex.linux.x86_64.gnu.a")
Warning! The ".opt" in the name of the SOPLEX library does not appear in the name of the soft-link.
(b) to use CPLEX (Version >= 10.0)
- ln -s <path to directory of cplex.h> <path to SCIP>/lib/include/cpxinc
(e.g. "cd scip; ln -s /cplex121/include/ilcplex lib/include/cpxinc")
- ln -s <file libcplex.a> <path to SCIP>/lib/static/libcplex.$(OSTYPE).$(ARCH).$(COMP).a
for each operation system and architecture to use
(e.g. "cd scip; ln -s /cplex121/lib/x86-64_debian4.0_4.1/static_pic/libcplex.a lib/static/libcplex.linux.x86.gnu.a")
(c) to use XPRESS
- ln -s <path to directory of xprs.h> <path to SCIP>/lib/include/xprsinc
(e.g. "cd scip; ln -s /xpressmp/include lib/include/xprsinc")
- ln -s <file libxprs.a> <path to SCIP>/lib/static/libxprs.$(OSTYPE).$(ARCH).$(COMP).a
for each operation system and architecture to use
(e.g. "cd scip; ln -s /xpressmp/lib/libxprs.a lib/static/libxprs.linux.x86.gnu.a")
(d) to use MOSEK
- ln -s <path to directory of mosek.h> <path to SCIP>/lib/include/mskinc
(e.g. "cd scip; ln -s /mosek/8/tools/platform/linux64x86/h lib/include/mskinc")
- ln -s <file libmosek.so> <path to SCIP>/lib/shared/libmosek.$(OSTYPE).$(ARCH).$(COMP).so
for each operation system and architecture to use
(e.g. "cd scip; ln -s /mosek/8/tools/platform/linux64x86/bin/libmosek64.so lib/shared/libmosek.linux.x86_64.gnu.so")
- since MOSEK is a shared library, make sure your LD_LIBRARY_PATH contains <path to SCIP>/lib/shared
(e) to use CLP
- ln -s <path to Clp main directory> <path to SCIP>/lib/include/libclp.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT)
for each operating system and architecture to use
(e.g. "cd scip; ln -s /Coin-Clp lib/include/libclp.linux.x86.gnu.opt")
(f) to use ZIMPL as additional file reader for reading *.zpl files
- mkdir <path to SCIP>/lib/include/zimplinc
- ln -s <path to ZIMPL's *.h files> <path to SCIP>/lib/include/zimplinc/zimpl
- ln -s <file libzimpl-<version>.<options>.a> <path to SCIP>/lib/static/libzimpl.$(OSTYPE).$(ARCH).$(COMP).a
Note that ZIMPL needs the GNU multiprecision library (GMP) to be installed on your system.
(g) to use IPOPT as NLP solver
- ln -s <path to IPOPT installation> <path to SCIP>/lib/ipopt.$(OSTYPE).$(ARCH).$(COMP).$(IPOPTOPT)
(e.g. "cd scip; ln -s /Ipopt lib/shared/ipopt.linux.x86.gnu.opt")
The path to the IPOPT installation is the path under where the Ipopt build has been installed.
It should contain the directories include/coin with the Ipopt header files, the directory lib with the Ipopt libraries,
and the directory share/coin/doc/Ipopt with the ipopt_addlibs_cpp.txt file.
(h) to use WORHP as NLP solver
- ln -s <path to WORHP installation> <path to SCIP>/lib/shared/worhp.$(OSTYPE).$(ARCH).$(COMP).$(WORHPOPT)
(e.g. "cd scip; ln -s /Worhp lib/shared/worhp.linux.x86.gnu.opt")
The path to the WORHP installation is the path under where the Worhp build has been installed.
It should contain the directories include/worhp with the WORHP header files and the directory lib with the WORHP libraries.
(i) to use FilterSQP as NLP solver
- ln -s <path to FilterSQP library> <path to SCIP>/lib/libfiltersqp.$(OSTYPE).$(ARCH).$(COMP).a
- ln -s <path to BQPD library> <path to SCIP>/lib/libbqpd.$(OSTYPE).$(ARCH).$(COMP).a
(j) to use GAMS
- ln -s <path to GAMS system directory> <path to SCIP>/lib/shared/gams.$(OSTYPE).$(ARCH).$(COMP)
(k) to use bliss
- ln -s <path to bliss *.hh files> <path to SCIP>/lib/include/bliss
(e.g. "cd scip; ln -s ../bliss" lib/include/bliss)
- ln -s <file libbliss.[...].a> <path to SCIP>/lib/static/libbliss.$(OSTYPE).$(ARCH).$(COMP).a
for each operation system and architecture to use
(e.g. "cd scip; ln -s ../bliss/libbliss.a lib.static/libbliss.linux.x86_64.gnu.a")
4. To run the program enter "bin/scip.$(OSTYPE).$(ARCH).$(COMP).$(OPT).$(LPS)"
(e.g. "bin/scip.linux.x86.gnu.opt.spx") or just "bin/scip" for the last compiled version
5. To generate the documentation, you need to have doxygen installed, and
enter "make doc"
6. To check the code with lint, you need to have flexelint installed, and
enter "make lint"
7. To run a short test, enter "make [options] test" with the same options with which you compiled SCIP in step 1.
If you use EXPRINT=none, a few MINLP instances might be aborted. If you use LPS=none, many instances will fail or take ages to be solved
Remarks on Installing under Windows using MinGW
-----------------------------------------------
To build your own Windows binaries under Windows, we recommend using the MinGW-Compiler with MSYS from mingw.org.
First install MSYS, then MinGW to the mingw folder inside the msys folder.
Now you need to install the following packages to the mingw folder:
- zlib (or use ZLIB=false)
- pcre (or use ZIMPL=false since pcre is needed for ZIMPL and ZIMPL-support in SCIP)
- gmplib (or use ZIMPL=false since gmplib is needed for ZIMPL and ZIMPL-support in SCIP)
(After calling "make clean" in the ZIMPL folder you will also need flex and bison to remake ZIMPL.
We recommend NOT to use "make clean" inside the ZIMPL-folder if you do not have these packages installed.)
You can download these additional packages as precompiled binaries for example from:
http://gnuwin32.sourceforge.net/packages.html (zlib&pcre)
http://cs.nyu.edu/exact/core/gmp/ (gmplib)
or compile the source on your own from the project homepages:
http://www.zlib.net/
http://www.pcre.org/
http://www.gmplib.org/
(The command "./configure --prefix=/mingw ; make ; make install" should succeed without problems and installs the packages into the mingw folder.)
Now "make READLINE=false" should be compiling without errors.
Please note that we do NOT support creating the doxygen documentation or readline-usage under Windows.
Since there are no real symlinks in MSYS, the include and library files of SoPlex and ZIMPL are actually copied into the SCIP-lib-folder.
When you recompile ZIMPL or SoPlex after compiling SCIP you have to copy the libraries manually into the SCIP-lib-folder and recompile SCIP afterwards.