Build Problems
CVC4 is a large project with a complicated build system, and it sometimes it a bit non-obvious why it is not doing what you think you want it to. Here is a repository of what can go wrong, what happened and how to mitigate the problem.
Configure Problems
Changing the --prefix option after compiling
If you try to change the ./configure --prefix=...
option after having built a copy of CVC4, and then attempt to do make install
, you are likely going to see an error like this:
make[6]: Entering directory `/home/taking/ws/cvc4/trunk/builds/x86_64-unknown-linux-gnu/debug/src/parser' /bin/mkdir -p '/home/taking/phony_install_targets/cvc4/trunk/lib' /bin/bash ../../libtool --mode=install /usr/bin/install -c libcvc4parser.la '/home/taking/phony_install_targets/cvc4/trunk/lib' libtool: install: error: cannot install `libcvc4parser.la' to a directory not ending in /usr/local/lib
What happened is that libtool is not going to install the build library file (libcvc4parser.la) that already has hard links to the previous prefix (/usr/local/lib).
The only supported (and slower) option is to recompile from scratch
make clean; ./configure ... ; make install
A faster (and more dangerous) option is to touch at least one file in each library to force the build system relink exactly the exported libraries. Run the following from the CVC4 directory and be stunned that it works:
touch src/smt/smt_engine.h touch src/parser/parser.h
Currently, only those two are enough though this may change in the future. Unfortunately, ./configure --prefix=...
is not currently smart enough to do this the latter option automatically.