1INSTALL - Installation of Vim on different machines. 2 3This file contains instructions for compiling Vim. If you already have an 4executable version of Vim, you don't need this. 5 6Contents: 71. Generic 82. Unix 93. OS/2 (with EMX 0.9b) 104. Atari MiNT 11 12See INSTALLami.txt for Amiga 13See INSTALLmac.txt for Macintosh 14See INSTALLpc.txt for PC (Windows XP/Vista/7/8/10) 15See INSTALLvms.txt for VMS 16See INSTALLx.txt for cross-compiling on Unix 17See ../READMEdir/README_390.txt for z/OS and OS/390 Unix 18See ../runtime/doc/os_haiku.txt for Haiku 19 201. Generic 21========== 22 23If you compile Vim without specifying anything, you will get the default 24behaviour as is documented, which should be fine for most people. 25 26For features that you can't enable/disable in another way, you can edit the 27file "feature.h" to match your preferences. 28 29 302. Unix 31======= 32 33Summary: 341. make run configure, compile and link 352. make install installation in /usr/local 36 37This will include the GUI and X11 libraries, if you have them. If you want a 38version of Vim that is small and starts up quickly, see the Makefile for how 39to disable the GUI and X11. If you don't have GUI libraries and/or X11, these 40features will be disabled automatically. 41 42To built Vim on Ubuntu from scratch on a clean system using git: 43 Install tools required to be able to get and build Vim: 44 % sudo apt install git 45 % sudo apt install make 46 % sudo apt install clang 47 48 Build Vim with default features: 49 % git clone https://github.com/vim/vim.git 50 % cd vim/src 51 % make 52 53 Run tests to check there are no problems: 54 % make test 55 56 Install Vim in /usr/local: 57 % sudo make install 58 59 Add X windows clipboard support (also needed for GUI): 60 % sudo apt install libxt-dev 61 % make reconfig 62 63 Add GUI support: 64 % sudo apt install libgtk-3-dev 65 % make reconfig 66 67 Add Python 3 support: 68 % sudo apt install libpython3-dev 69 Uncomment this line in Makefile: 70 "CONF_OPT_PYTHON3 = --enable-python3interp" 71 % make reconfig 72 73 Debugging: 74 % sudo apt install valgrind 75 Uncomment this line in Makefile: 76 CFLAGS = -g -Wall -Wextra -Wshadow -Wmissing-prototypes -Wunreachable-code -Wno-deprecated-declarations -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 77 % make reconfig 78 % make test_{test-name} 79 See output in testdir/valgrind.test_{test-name} 80 81 82See the start of Makefile for more detailed instructions about how to compile 83Vim. 84 85If you need extra compiler and/or linker arguments, set $CFLAGS and/or $LIBS 86before starting configure. Example: 87 88 env CFLAGS=-I/usr/local/include LIBS=-lm make 89 90This is only needed for things that configure doesn't offer a specific argument 91for or figures out by itself. First try running configure without extra 92arguments. 93 94GNU Autoconf and a few other tools have been used to make Vim work on many 95different Unix systems. The advantage of this is that Vim should compile 96on most systems without any adjustments. The disadvantage is that when 97adjustments are required, it takes some time to understand what is happening. 98 99If configure finds all library files and then complains when linking that some 100of them can't be found, your linker doesn't return an error code for missing 101libraries. Vim should be linked fine anyway, mostly you can just ignore these 102errors. 103 104If you run configure by hand (not using the Makefile), remember that any 105changes in the Makefile have no influence on configure. This may be what you 106want, but maybe not! 107 108The advantage of running configure separately, is that you can write a script 109to build Vim, without changing the Makefile or feature.h. Example (using sh): 110 111 CFLAGS=-DCOMPILER_FLAG ./configure --enable-gui=motif 112 113One thing to watch out for: If the configure script itself changes, running 114"make" will execute it again, but without your arguments. Do "make clean" and 115run configure again. 116 117If you are compiling Vim for several machines, for each machine: 118 a. make shadow 119 b. mv shadow machine_name 120 c. cd machine_name 121 d. make; make install 122 123[Don't use a path for machine_name, just a directory name, otherwise the links 124that "make shadow" creates won't work.] 125 126 127Unix: COMPILING WITH/WITHOUT GUI 128 129NOTE: This is incomplete, look in Makefile for more info. 130 131These configure arguments can be used to select which GUI to use: 132--enable-gui=gtk or: gtk2, motif, athena or auto 133--disable-gtk-check 134--disable-motif-check 135--disable-athena-check 136 137This configure argument can be used to disable the GUI, even when the necessary 138files are found: 139--disable-gui 140 141--enable-gui defaults to "auto", so it will automatically look for a GUI (in 142the order of GTK, Motif, then Athena). If one is found, then it is used and 143does not proceed to check any of the remaining ones. Otherwise, it moves on 144to the next one. 145 146--enable-{gtk,gtk2,kde,motif,athena}-check all default to "yes", such that if 147--enable-gui is "auto" (which it is by default), GTK, Motif, and Athena will 148be checked for. If you want to *exclude* a certain check, then you use 149--disable-{gtk,gtk2,kde,motif,athena}-check. 150 151For example, if --enable-gui is set to "auto", but you don't want it look for 152Motif, you then also specify --disable-motif-check. This results in only 153checking for GTK and Athena. 154 155Lastly, if you know which one you want to use, then you can just do 156--enable-gui={gtk,gtk2,kde,motif,athena}. So if you wanted to only use Motif, 157then you'd specify --enable-gui=motif. Once you specify what you want, the 158--enable-{gtk,gtk2,kde,motif,athena}-check options are ignored. 159 160On Linux you usually need GUI "-devel" packages. You may already have GTK 161libraries installed, but that doesn't mean you can compile Vim with GTK, you 162also need the header files. 163 164For compiling with the GTK+ GUI, you need a recent version of glib and gtk+. 165Configure checks for at least version 1.1.16. An older version is not selected 166automatically. If you want to use it anyway, run configure with 167"--disable-gtktest". 168GTK requires an ANSI C compiler. If you fail to compile Vim with GTK+ (it 169is the preferred choice), try selecting another one in the Makefile. 170If you are sure you have GTK installed, but for some reason configure says you 171do not, you may have left-over header files and/or library files from an older 172(and incompatible) version of GTK. if this is the case, please check 173auto/config.log for any error messages that may give you a hint as to what's 174happening. 175 176There used to be a KDE version of Vim, using Qt libraries, but since it didn't 177work very well and there was no maintainer it was dropped. 178 179 180Unix: COMPILING WITH MULTI-BYTE 181 182When you want to compile with the multi-byte features enabled, make sure you 183compile on a machine where the locale settings actually work, otherwise the 184configure tests may fail. You need to compile with "big" features: 185 186 ./configure --with-features=big 187 188Unix: COMPILING ON LINUX 189 190On Linux, when using -g to compile (which is default for gcc), the executable 191will probably be statically linked. If you don't want this, remove the -g 192option from CFLAGS. 193 194Unix: PUTTING vimrc IN /etc 195 196Some Linux distributions prefer to put the global vimrc file in /etc, and the 197Vim runtime files in /usr. This can be done with: 198 ./configure --prefix=/usr 199 make VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim MAKE="make -e" 200 201Unix: COMPILING ON NeXT 202 203Add the "-posix" argument to the compiler by using one of these commands: 204 setenv CC 'cc -posix' (csh) 205 export CC='cc -posix' (sh) 206And run configure with "--disable-motif-check". 207 208Unix: LOCAL HEADERS AND LIBRARIES NOT IN /usr/local 209 210Sometimes it is necessary to search different path than /usr/local for locally 211installed headers (/usr/local/include) and libraries (/usr/local/lib). 212To search /stranger/include and /stranger/lib for locally installed 213headers and libraries, use: 214 ./configure --with-local-dir=/stranger 215And to not search for locally installed headers and libraries at all, use: 216 ./configure --without-local-dir 217 218 2193. OS/2 220======= 221 222OS/2 support was removed in patch 7.4.1008 223 224 2254. Atari MiNT 226============= 227 228Atari MiNT support was removed in patch 8.2.1215. 229