Ferramentas do usuário

Ferramentas do site


twsg:dicas:compila_teogc

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
twsg:dicas:compila_teogc [2010/04/12 22:10] – Boost Regexp emersontwsg:dicas:compila_teogc [2018/01/30 01:35] (atual) – [Corrigir fontes TerraLib 422] emerson
Linha 1: Linha 1:
 ====== Compilando o TerraOGC no Linux ====== ====== Compilando o TerraOGC no Linux ======
  
- +Arquivo atualizado para o uso do CMakePara QMake, verifique as versões anteriores deste documento.
-===== Variáveis de ambiente ===== +
- +
-Antes de compilar o TerraOGC, é necessário ajustar algumas variáveis de ambiente, normalmente no arquivo ''~.bashrc''. Coloque neste arquivo a seguinte configuração: +
- +
-<code bash> +
-# TerraLib Devel +
-TERRALIB_DIR=/home/emerson/projetos/terralib +
- +
-LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TERRALIB_DIR/terralibx/Release +
-LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TERRALIB_DIR/extensions/terramanager/lib +
-LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TERRALIB_DIR/../terraogc/lib +
- +
-export LD_LIBRARY_PATH +
-</code> +
- +
-**Troque** a variável ''TERRALIB_DIR'' pelo valor usado no seu sistema. Antes de usar essas configurações você precisa abrir um novo terminal para que as alterações tenham efeito. +
- +
-Só lembrar que o uso de ''LD_LIBRARY_PATH'' é para ambientes de **programação**Em ambientes de **produção** é melhor deixar as libs em pastas reconhecidas pelo linker. Mais detalhes neste [[http://blogs.sun.com/rie/date/20040710|artigo]] ou [[http://xahlee.org/UnixResource_dir/_/ldpath.html|este]]. +
- +
-==== TerraLib debug ==== +
- +
-Caso queira usar a TerraLib no modo Debug, troque a linha: <code bash> +
-LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TERRALIB_DIR/terralibx/Release +
-</code> +
-por: <code bash> +
-LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TERRALIB_DIR/terralibx/Debug +
-</code> +
- +
- +
- +
-===== Configurando o QMake ===== +
- +
-==== TerraLib 3.2.1 e anteriores ==== +
- +
-Antes da TerraLib 3.3.0a biblioteca TIFF usava o nome libtiff para linkar com o sistema. Isso gerava um conflito com a libtiff do sistema. Em consequência faz-se necessário, **para versões anteriores da TerraLib** corrigir alguns arquivos. +
- +
-Os projetos TerraOGC forma adaptados para a versão 3.3.0 da TerraLib. Caso queira compilar nas versões anteriores basta trocar as linhas abaixo nos arquivos ''terraOGC/build/linux/*cgi/*.pro''+
- +
-De: +
-<code> +
-LIBS += -L../../../../../terralibx/lib -lterralibtiff +
-</code> +
-Para: +
-<code> +
-LIBS += -L../../../../../terralibx/lib -ltiff +
-</code> +
- +
-=== Mandriva 2007 x86 === +
- +
-  * No Mandriva, precisa alterar o arquivo ''/usr/lib/qt3/mkspecs/linux-g++/qmake.conf'', tirando o ''/usr/lib'' da linkagem. Troque as linhas <code> +
-QMAKE_LIBDIR_X11 = /usr/lib +
-QMAKE_LIBDIR_OPENGL = /usr/lib +
-</code>  por <code> +
-QMAKE_LIBDIR_X11 =  +
-QMAKE_LIBDIR_OPENGL =  +
-</code> +
- +
-=== OpenSuse 11.0 x86_64 === +
- +
-  * No OpenSuse 11.0 precisa alterar o arquivo ''/usr/lib/qt3/mkspecs/default/qmake.conf'', tirando o ''/usr/lib'' da linkagem. Troque as linhas <code> +
-QMAKE_LIBDIR            = /usr/lib64/ +
-QMAKE_LIBDIR_OPENGL     = /usr/lib64/ +
-</code>  por <code> +
-QMAKE_LIBDIR          =  +
-QMAKE_LIBDIR_OPENGL =  +
-</code> +
- +
- +
-==== Outras distros ==== +
- +
-=== CentOS 5.2 x86 === +
- +
-O CentOS não configura o ''/usr/include'' por padrão quando usando o QMake. Para consertar edite o arquivo ''/usr/lib/qt-3.3/mkspecs/linux-g++/qmake.conf''+
- +
-De: +
-<code> +
-QMAKE_INCDIR            = +
-</code> +
-Para: +
-<code> +
-QMAKE_INCDIR            = /usr/include +
-</code> +
- +
- +
-===== GCC 4 ===== +
- +
-O GCC (GNU C Compiler) em sua versão 4 e posteriores está adotando características do C++0x (versão ainda não homologada pela ISO). Em consequência, vários //warnings// começaram a aparecer na compilação. Você pode encontrar algo nos links: [[http://gcc.gnu.org/ml/gcc-help/2007-06/msg00153.html|Referência]] e [[http://gcc.gnu.org/onlinedocs/gcc-4.2.0/gcc/Warning-Options.html#index-Wreturn_002dtype-230|manual]] +
- +
  
 ===== Dependências ===== ===== Dependências =====
Linha 114: Linha 25:
   * cURL: libcurl4, libcurl-devel   * cURL: libcurl4, libcurl-devel
   * LibZip: libzip, libzip1-devel   * LibZip: libzip, libzip1-devel
- 
  
  
Linha 125: Linha 35:
   * Apache Xerces: Xerces-c, libXerces-c-devel   * Apache Xerces: Xerces-c, libXerces-c-devel
   * cURL: libcurl4, libcurl-devel   * cURL: libcurl4, libcurl-devel
-  * LibZip: libzip1 e libzip-devel +  * LibZip: libzip1 e libzip-devel (libzip2 no OpenSUSE 13.2) 
- +  * Boost: boost, boost-devel
-=== 11.2 === +
- +
-  * libqt4-devel: para obter o QMake +
- +
- +
- +
  
 +Obs: a partir da versão 12.3 do OpenSUSE recomenda-se adicionar o repositório [[http://download.opensuse.org/repositories/Application:/Geo/|App:Geo]] e instalar o libgeotiff-devel, com os fontes da LibGeoTIFF, e libjpeg8-devel.
 ==== CentOS ==== ==== CentOS ====
  
Linha 153: Linha 57:
     - O default é instalar tudo no ''/usr/local/'', inclusive o zip.h     - O default é instalar tudo no ''/usr/local/'', inclusive o zip.h
   * Extras: glibc-headers para código em C   * Extras: glibc-headers para código em C
- 
- 
- 
  
  
Linha 167: Linha 68:
   * cURL: libcurl3, libcurl4-openssl-dev   * cURL: libcurl3, libcurl4-openssl-dev
   * LibZip: libzip1, libzip-dev   * LibZip: libzip1, libzip-dev
 +  * Boost Regexp: libboost-regex, libboost-regex-dev
  
  
 +===== TerraLib =====
  
-===== Projeto all =====+Obtendo e compilando a TerraLib.
  
-  * Vá para a pasta ''terraOGC/build/linux/all'' +Procedimento usando na versão 4.2.2, mas pode ser usada em outras versões posteriores com as devidas adaptações. 
-  * Execute o //QMake// e em seguida o //Make// da seguinte forma: <code bash> +\\ 
-qmake TE_DATABASE_OPTION="$1" TE_PROJECT_TYPE="$2" + 
-make+Crie uma pasta ''projetos'' e crie a pasta para a TerraLib. Baixe a última TAG estável (nesse caso a 4.2.2). Use CMake para compilar o projeto. 
 + 
 +<code bash> 
 +mkdir terralib422 
 +cd terralib422 
 +svn export https://svn.dpi.inpe.br/terralib/tags/v-4-2-2/build 
 +svn export https://svn.dpi.inpe.br/terralib/tags/v-4-2-2/src 
 +svn export https://svn.dpi.inpe.br/terralib/tags/v-4-2-2/extensions  
 + 
 +mkdir cmake && cd cmake 
 +cmake ../build/cmake
 </code> </code>
-  * Substitua $1 e $2 de acordo com a tabela abaixo: 
  
-^        Opção        ^       $               $        ^ +Após gerar esse código, é necessário mudar alguns parâmetros no arquivo ''terralib/cmake/CMakeCache.txt''. Alguns caminhos talvez precisem ser adaptados ao seu sistema: 
-| SGBD MySQL          | HAS_MYSQL                          | + 
-| SGBD PostgreSQL     | HAS_POSTGRESQL  |                    | +  - BUILD_TERRAMANAGER=ON 
-| SGBD MySQL PostgreSQL | HAS_MYSQL HAS_POSTGRESQL |       | +  - BUILD_TERRAVIEW=OFF 
-| Versão release      |                 | RELEASE (default)  | +  - CMAKE_PROJECT_NAME=terralib 
-| Versão debug        |                 | DEBUG              |+  - GeoTIFF_INCLUDE_DIR=/usr/include/libgeotiff 
 +  - PostGIS_INCLUDE_DIR=/usr/include/pgsql 
 +  - SQLite_ENABLED=OFF 
 +  - TE_DTM_ENABLED=OFF 
 +  - TE_DXF_ENABLED=OFF 
 +  - TE_PDI_ENABLED=OFF 
 +  - TE_QT3_DRIVERS_ENABLED=OFF 
 +  - TE_QWT3_DRIVERS_ENABLED=OFF 
 +  - TE_SPL_ENABLED=OFF 
 +  - TE_STAT_ENABLED=OFF 
 +  - ZLIB_LIBRARIES:FILEPATH=/lib64/libz.so.1 
 + 
 +Rodar o cmake de novo: 
 +<code bash>cmake ../build/cmake</code> 
 + 
 +e verificar se há algum erro de compilação. No meu ambiente eu ignorei a GDAL e diversas outras libs não usadas pelo TerraOGC. 
 + 
 +==== Corrigir fontes TerraLib 422 ==== 
 + 
 +Corrigir os seguintes arquivos da TerraLib 4.2.2: 
 + 
 +Inserir a tag: <code C++>#include <unistd.h> </code> 
 +em src/terralib/kernel/TeConnectionPool.cpp src/terralib/kernel/yyTemporal.cpp 
 + 
 +Trocar o EPSG no arquivo TeProjection.cpp: 
 +4979 -> 4326 (Linhas 186 e 1435) 
 + 
 +===TePostgreSQL.cpp=== 
 +Corrigir a linha  do arquivo TePostgreSQL.cpp: 
 + 
 +L728: <code C++>createTable += "\"" + (*it).rep_.name_ + "\" ";</code> 
 +L1030: <code C++> string q = "INSERT INTO "+tableName + " ( \""+ attrs+"\") " + " VALUES ("+values+") ";</code> 
 +L977: <code C++> attrs += "\" , \"";</code> 
 + 
 +===TePostGIS.cpp=== 
 +Corrigir o arquivo TePostGIS.cpp: 
 +L334: <code C++>createTable += "\"" + (*it).rep_.name_ + "\" ";</code> 
 +L1484: <code C++>create = "CREATE INDEX sp_idx_" + table + " ON " + table + " USING GIST (" + column + ")";</code>
  
-  * Os projetos da TerraLib e do TerraManager serão compilados também (se ainda não foram+Esta última observação parece (L1484ser aplicável ao PostGIS 2+. 
-  Para gerar Makefile apenas para o TerraOGC, adicione mais um parâmetro na chamada do qmake+ 
- <code bash> +Depois é só compilar 
-qmake TE_DATABASE_OPTION="$1" TE_PROJECT_TYPE="$2" ONLY_TEOGC=1+<code bash>make</code> 
 + 
 +===== TerraOGC ===== 
 + 
 +Obtendo e compilando o TerraOGC. Você pode baixar a versão do TerraOGC compatível com a versão do TerraLib que você usa. Para a última versão usar ''trunk'' do SVN. 
 +\\ 
 + 
 + 
 +Baixa o TerraOGC 
 +<code bash> 
 +cd projetos 
 +svn co https://svn.dpi.inpe.br/terraogc/trunk/ terraogc 
 +</code> 
 + 
 +Prepara a TerraLib: duas opções, mover ou linkar. Para DEV melhor linkar. 
 +<code bash> 
 +cd terraogc 
 +mkdir lib && cd lib 
 +ln -s ../../terralib422/cmake/libterramanager.so . 
 +ln -s ../../terralib422/cmake/libterralib.so . 
 +ln -s ../../terralib422/cmake/libterralib_shp.so .
 </code> </code>
-  * Este //flag// é útil para desenvolvimento, quando é necessário um //rebuild-all// no projeto (''make clean && make''), mas sem precisar compilar a TerraLib e o TerraManager novamente. 
  
 +E ajusta no ~/bashrc:
 +<code bash>export LD_LIBRARY_PATH=<your_path>projetos/terraogc/lib</code>
  
 +Na produção, mover para lib.
 +\\
  
-==== Exemplos ====+Após isso, rodar o cmake para o TerraOGC. Ele será armazenado na pasta terraogc/bin, para evitar misturar com os demais pacotes de desenvolvimento.
  
-  - Para compilar o TerraOGC com suporte a PostgreSQL e na versão release: <code bash> +<code bash> 
-qmake TE_DATABASE_OPTION="HAS_POSTGRESQL"+cd terraogc/bin 
 +mkdir cmake && cd cmake 
 +cmake ../../build/cmake
 </code> </code>
-  Para compilar TerraOGC com suporte a PostgreSQL MySQL na versão debug <code bash> + 
-qmake TE_DATABASE_OPTION="HAS_POSTGRESQL HAS_MYSQL" TE_PROJECT_TYPE="DEBUG"+Editar o ''terraogc/bin/cmake/CMakeCache.txt''. Aqui são poucos parâmetros para ajuste: 
 + 
 +  CURL_LIBRARY=/usr/lib64/libcurl.so.4 
 +  - GeoTIFF_INCLUDE_DIR=/usr/include/libgeotiff 
 + 
 +Roda CMake de novo compila: 
 +<code bash> 
 +cmake ../../build/cmake 
 +make
 </code> </code>
-  - Para compilar o TerraOGC com suporte a PostgreSQL na versão releasemas sem precisar compilar a TerraLib (já está feito) <code bash> + 
-qmake TE_DATABASE_OPTION="HAS_POSTGRESQLONLY_TEOGC=1+Após compiladotudo fica nas subpastas do ''terraogc/bin/cmake/''. Duas opções, mover ou linkar. Para DEV melhor linkar. 
 +<code bash> 
 +cd terraogc/lib 
 +find ../bin/cmake -name "*.so-exec ln -s {} . \; 
 +cd terraogc/bin 
 +find cmake -name "*.cgi" -exec ln -s {} . \;
 </code> </code>
 +
 +Na produção, copiar ou mover para bin e lib ao invés de linkar.
 +
twsg/dicas/compila_teogc.1271110228.txt.gz · Última modificação: 2010/04/12 22:10 por emerson