IUPAC-InChI / InChI

Main InChI repository
MIT License
28 stars 2 forks source link

Official home of the InChI

Using precompiled binaries

64-bit and 32-bit precompiled binaries (executable, .dll/.so and ELF files) are located in the following folders:

Microsoft® Windows
Files (given in compressed .zip format) Location(s) Compiler
inchi-1.exe 64-bit: INCHI-1-BIN/windows/64bit Microsoft® Visual Studio C++ (MSVC)
32-bit: INCHI-1-BIN/windows/32bit MinGW-w64/GCC
libinchi.dll
+ corresponding inchi_main.exe
64-bit: INCHI-1-BIN/windows/64bit/dll Microsoft® Visual Studio C++ (MSVC)
32-bit: INCHI-1-BIN/windows/32bit/dll MinGW-w64/GCC


UNIX-based OSs and MacOS®
Files (given in compressed .gz format) Location(s) Compiler
inchi-1 (ELF file) 64-bit: INCHI-1-BIN/linux/64bit/
32-bit: INCHI-1-BIN/linux/32bit/
GCC
libinchi.so.1.07
+ corresponding inchi_main (ELF file)
64-bit: INCHI-1-BIN/linux/64bit/so/
32-bit: INCHI-1-BIN/linux/32bit/so/
GCC


Compiling InChI v.1.07 from source

Project files for Microsoft® Visual C++ (MSVC)/Clang/LLVM users are provided for both command line and API versions of InChI v.1.07. The project files are located in the following folders:

For other C compilers, makefile/makefile32 files are provided in the following folders:

makefile/makefile32 files are configured to detect OSs automatically, so it is no longer needed to specify OS explicitly or run batch/bash script(s) before compiling. If both GCC and Clang/LLVM compilers are detected, GCC is used by default; setting Clang/LLVM as default compiler can be done simply by changing CCN parameter from 1 to 2 in makefile/makefile32.

If makefile/makefile32 is used for compiling libinchi on Microsoft® Windows, libinchi.dll is now generated instead of libinchi.so.1.07.

In order to further improve code security, bounds checking functions (see Annex K of C11 standard) can be optionally used in InChI v.1.07. Since a number of C compilers (e.g. GNU GCC) do not support bounds checking functions, they can be installed using some of the third-party open-source libraries such as:

The use of bounds checking functions in InChI v.1.07 can be enabled/disabled in bcf_s.h.

If you wish to use Intel® oneAPI Threading Building Blocks (oneTBB), please follow the instructions given in header files mode.h and tbbmalloc_proxy.h. Please note that the pre-compiled binaries mentioned in the previous section do not use oneTBB.

Known issues

If API version (i.e. libinchi.so.1.07 and inchi_main ELF file) is compiled using Clang/LLVM on Linux OS, and libinchi.so.1.07 cannot be found by inchi_main, LD_LIBRARY_PATH should be set either temporarily or permanently before inchi_main ELF file is used. It might be worth trying to change the value of LINKER_CWD_PATH to -Wl,-R,"",-rpath,$(LIB_DIR) (i.e. replacing = with ,) in corresponding makefile/makefile32; however, please note that during our tests, this option failed to generate libinchi.so.1.07 with Clang/LLVM on Linux. More reliably, LD_LIBRARY_PATH can be set in several ways:

Experimental features under development

Some of the experimental/engineering/hidden options featured in InChI 1.07 which are known to be not fully functional are:

Please refrain from using the above mentioned options as they might not function properly, or will not be recognised. Regular updates with regard to their functionality will be posted on this page.