FAQ - Delft3D
Category Filter
Asset Publisher
On Linux, the message "ERROR: unexpected PLT reloc type 0x25" appears ▶
This message may appear when Delft3D is built on a machine with a newer Linux kernel, and then the resulting binaries are copied to a machine with an older Linux kernel. There is no solution yet for this problem. You have to avoid this error by compiling it on a machine with an older kernel or run it on a machine with a newer kernel.
On Linux, the message "ERROR: Can not open shared library "libflow2d3d.so"" appears ▶
This means that when trying to run libflow2d3d.so, another so-file is needed and can not be found. If you execute the Linux command
ldd libflow2d3d.so
you will get an overview of all so-files needed and whether the system can find their location. Probably some of the so-files can not be found on your system. This is signalled as follows by the ldd command
libDelftOnline.so => not found
You can solve that problem by locating them (libDelftOnline.so in the example) on your system and adding their path to the environment parameter LD_LIBRARY_PATH. You can do this in the runscript "examples\01_standard\run_flow2d3d.sh". Example lines to add, assuming "libDleftOnline.so" is in directory "/oss_delft3d/src/lib":
libdir=/oss_delft3d/src/lib export LD_LIBRARY_PATH=$libdir:$LD_LIBRARY_PATH
On Linux, should I use "build.sh" to compile or not? ▶
There are two ways to compile on Linux (see "src/README"): 1) Execute "autogen", "configure" and "make" with the correct flags (see "src/README)". Use this method when all used tools (automake, libtool, mpich, etc.) are installed on their default location. 2) Use the script "build.sh". In this script you have to specify paths to tools explicitly. Use this method when some tools can not be found by default. Start by editing "build.sh" to have it pointing to the correct tools on your system.
On Linux, I keep getting odd compile/link errors ▶
Your environment settings may hamper the build process. Have a colleague building the source code or try with an empty/clean (virtual) environment.
On Linux, I do not have the latest or mentioned version of autoconf/libtool/automake/mpi on my system, what should I do now? ▶
Check if you have the latest version provided by your package management system (yum, dpkg, apt, port). You can sometimes find a more up to date version in one of the community repositories, such as EPEL. If the package is not provided by your package management you can install the software manually into either your personal directory (/home), the directory for additionally installed software (/usr/local) or for external software (/opt). To do this you often need to configure that specific package using a prefix (./configure --prefix=/home/user/.local
) and to set the PATH accordingly export PATH=~/.local/bin:$PATH
On Linux the file "logs/autoreconf.log" reads "/build.sh: line 129: autoreconf: command not found" ▶
The GNU Autoconf environment is not installed. See "Prerequisites Linux" on 4. Compile the source code.
On Linux problems with mpich ▶
One of the prerequisites for compiling on Linux is that mpich is properly installed. This means that you have to download the mpich source code and compile it with exactly the same compiler as you intent to use for the Delft3D source code. After having compiled it using the default mpich directory, you can compile the Delft3D source code by executing "autogen", "configure" and "make", see 4. Compile the source code. If you don't use the default mpich directory, the easiest way to compile the Delft3D source code is by using the script "build.sh": open it in a text editor, search for mpich and fill in the correct paths as used on your local machine.
Currently, if mpich is not properly installed:
- The make log may contain an error message like:
"dfinitmpi.f90(48): error #7002: Error in opening the compiled module file. Check INCLUDE paths."
- The make log may contain an error message like:
"undefined symbol: mpi_"
- Delft3D-FLOW may compile without problems but does not run in parallel. The safest way to check whether Delft3D-FLOW is build with a proper mpich version: check the make log; the link step should contain something like
"-L/path/to/mpich/compiled/with/same/compiler/lib -lfmpich -lmpich".
- The make log may contain an error message like:
relocation R_X86_64_32 against `MPIR_ThreadInfo' can not be used when making a shared object; recompile with -fPIC
If this error appears, your MPICH version is too old. Switching to MPICH version 3.1.2 or newer should solve the problem.
On Linux in WAVE: undefined reference to `small_' (and much more) ▶
Try installing the X11 development tools.