0029520: Visualization - drop deprecated V3d_View::Export() functionality and depende...
[occt.git] / dox / dev_guides / building / 3rdparty / 3rdparty_linux.md
1 \feff Building 3rd-party libraries on Linux {#occt_dev_guides__building_3rdparty_linux}
2 =========
3
4 @tableofcontents 
5
6 @section dev_guides__building_3rdparty_linux_1 Introduction
7
8 This document presents additional guidelines for building third-party 
9 products used by Open CASCADE Technology and samples on Linux platform. 
10
11 The links for downloading the third-party products are available on the web site 
12 of OPEN CASCADE SAS at 
13 http://www.opencascade.com/content/3rd-party-components. 
14
15 There are two types of third-party products, which are  necessary to build OCCT: 
16   
17 * Mandatory  products: 
18         * Tcl/Tk 8.5 - 8.6;  
19         * FreeType 2.4.10 - 2.5.3;
20 * Optional  products: 
21         * TBB 3.x - 4.x;
22         * FreeImage 3.14.1 - 3.16.0;
23         * VTK 6.1.0.
24
25 @section dev_guides__building_3rdparty_linux_2 Building Mandatory Third-party Products
26
27 @subsection dev_guides__building_3rdparty_linux_2_1 Tcl/Tk 
28
29 Tcl/Tk is required for DRAW test harness. 
30
31 @subsubsection dev_guides__building_3rdparty_linux_2_1_2 Installation from sources: Tcl
32   
33 Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it. 
34   
35 1. Enter the unix sub-directory of the directory where the Tcl source  files are located <i>(TCL_SRC_DIR)</i>. 
36
37        cd TCL_SRC_DIR/unix   
38
39 2. Run the *configure* command:
40
41        configure --enable-gcc  --enable-shared --enable-threads --prefix=TCL_INSTALL_DIR   
42
43    For a 64 bit platform also add <i>--enable-64bit</i> option to the command line. 
44   
45 3. If the configure command has finished successfully, start  the building process:
46   
47        make   
48
49 4. If building is finished successfully, start the installation of Tcl. 
50    All binary and service files of the product will be copied to the directory defined by *TCL_INSTALL_DIR* 
51
52        make install   
53
54 @subsubsection dev_guides__building_3rdparty_linux_2_1_3 Installation from sources: Tk
55   
56 Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it. 
57   
58 1. Enter the unix sub-directory of the directory where the Tk source files are located <i>(TK_SRC_DIR)</i> 
59
60        cd TK_SRC_DIR/unix   
61
62 2. Run the configure command, where <i>TCL_LIB_DIR</i> is *TCL_INSTALL_DIR/lib*.
63
64        configure --enable-gcc  --enable-shared --enable-threads --with-tcl=TCL_LIB_DIR  --prefix=TK_INSTALL_DIR   
65
66    For a 64 bit platform also add <i>--enable-64bit</i> option to the  command line. 
67
68 3. If the configure command has finished successfully, start the building process: 
69
70        make   
71
72 4. If the building has finished successfully, start the installation of Tk. 
73    All binary and service files of the product will be copied 
74    to the directory defined by *TK_INSTALL_DIR* (usually it is *TCL_INSTALL_DIR*) 
75
76        make install   
77
78 @subsection dev_guides__building_3rdparty_linux_2_2 FreeType
79
80 FreeType is required for text display in the 3D viewer. 
81 Download the necessary archive from http://sourceforge.net/projects/freetype/files/ and unpack it. 
82   
83 1. Enter the directory where the source files of FreeType  are located <i>(FREETYPE_SRC_DIR)</i>. 
84
85        cd FREETYPE_SRC_DIR   
86
87 2. Run the *configure* command: 
88   
89        configure  --prefix=FREETYPE_INSTALL_DIR   
90
91    For a 64 bit platform also add <i>CFLAGS='-m64 -fPIC'  CPPFLAGS='-m64 -fPIC'</i> option to the command line. 
92     
93 3. If the *configure* command has finished successfully, start  the building process: 
94
95        make   
96
97 4. If the building has finished successfully, start the installation of FreeType. 
98    All binary and service files of the product will be copied to the directory defined by *FREETYPE_INSTALL_DIR* 
99     
100        make install   
101
102 @section dev_guides__building_3rdparty_linux_3 Building Optional Third-party Products
103     
104 @subsection dev_guides__building_3rdparty_linux_3_1 TBB
105
106 This third-party product is  installed with binaries from the archive that can be downloaded from http://threadingbuildingblocks.org. 
107 Go to the **Download** page, find the  release version you need and pick the archive for Linux platform.
108 To install, unpack the downloaded archive of TBB product.
109
110 @subsection dev_guides__building_3rdparty_linux_3_3 FreeImage
111
112 Download the necessary archive from http://sourceforge.net/projects/freeimage/files/Source%20Distribution/
113 and unpack it. The directory with unpacked sources is  further referred to as *FREEIMAGE_SRC_DIR*. 
114   
115 1. Modify *FREEIMAGE_SRC_DIR/Source/OpenEXR/Imath/ImathMatrix.h*: 
116    In line 60 insert the following: 
117
118        #include string.h   
119
120 2. Enter the directory where the source files of FreeImage are located <i>(FREEIMAGE_SRC_DIR)</i>. 
121   
122        cd FREEIMAGE_SRC_DIR   
123
124 3. Run the building process 
125   
126        make   
127
128 4. Run the installation process 
129
130    a. If you have the permission to write into directories <i>/usr/include</i> and <i>/usr/lib</i>, run the following command: 
131
132           make install   
133    b. If you do not have this permission, you need to modify file *FREEIMAGE_SRC_DIR/Makefile.gnu*: 
134   
135       Change lines 7-9 from:
136   
137           DESTDIR ?= /   
138           INCDIR  ?= $(DESTDIR)/usr/include   
139           INSTALLDIR  ?= $(DESTDIR)/usr/lib   
140
141       to: 
142
143           DESTDIR  ?= $(DESTDIR)   
144           INCDIR  ?= $(DESTDIR)/include   
145           INSTALLDIR  ?= $(DESTDIR)/lib   
146
147       Change lines 65-67 from: 
148
149           install  -m 644 -o root -g root $(HEADER) $(INCDIR)   
150           install  -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR)   
151           install  -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR)   
152   
153       to:
154
155           install  -m 755 $(HEADER) $(INCDIR)   
156           install  -m 755 $(STATICLIB) $(INSTALLDIR)   
157           install  -m 755 $(SHAREDLIB) $(INSTALLDIR)
158
159       Change line 70 from: 
160
161           ldconfig
162
163       to:
164   
165           \#ldconfig   
166     
167    Then run the installation process by the following command: 
168
169         make DESTDIR=FREEIMAGE_INSTALL_DIR  install   
170
171 5. Clean temporary files
172
173         make clean
174
175 @subsection dev_guides__building_3rdparty_linux_3_4 VTK
176
177 You can download VTK sources from http://www.vtk.org/VTK/resources/software.html
178
179 ### The building procedure:
180
181 Download the necessary archive from http://www.vtk.org/VTK/resources/software.html and unpack it.
182
183 1. Install or build *cmake* product from the source file.
184 2. Start *cmake* in GUI mode with the directory where the source files of *VTK* are located:
185
186        ccmake VTK_SRC_DIR
187
188    * Press <i>[c]</i> to make the  initial configuration
189    * Define the necessary options in *VTK_INSTALL_PREFIX*
190    * Press <i>[c]</i> to make the final  configuration
191    * Press <i>[g]</i> to generate  Makefile and exit
192
193 3. Start the building of VTK:
194
195        make
196
197 4. Start the installation of VTK. Binaries will be installed according to the *VTK_INSTALL_PREFIX* option.
198
199        make install
200
201 @section dev_guides__building_3rdparty_linux_4 Installation From Official Repositories
202
203 @subsection dev_guides__building_3rdparty_linux_4_1 Debian-based distributives
204
205 All 3rd-party products required for building of  OCCT could be installed
206 from official repositories. You may install them from  console using apt-get utility:
207
208     sudo apt-get install tcllib tklib tcl-dev tk-dev libfreetype-dev libxt-dev libxmu-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libfreeimage-dev libtbb-dev
209
210 To launch binaries built with WOK you need to install C shell and 32-bit libraries on x86_64 distributives:
211
212     # you may need to add i386 if not done already by command "dpkg --add-architecture i386"
213     sudo apt-get install csh libstdc++6:i386 libxt6:i386 libxext6:i386 libxmu6:i386
214
215 Building is possible with C++ compliant compiler:
216
217     sudo apt-get install g++