Re: Problemas em compilar o Tio para Linux 64bits

8 views
Skip to first unread message

Rodrigo Strauss

unread,
May 16, 2010, 2:17:52 PM5/16/10
to tio-proje...@googlegroups.com
Dê um update no código, deve estar funcionando agora. Tinha até um
TODO no código para resolver isso.

Testei ontem no Ubuntu e o Tio não estava rodando em debug no Linux,
parava em um ASSERT dentro do logdb.h, que é o log de transações. Se
você tiver problemas com isso, rode em Release (cmake
-DCMAKE_BUILD_TYPE=Release) e não use o os containers do tipo
persistent por enquanto. Já estou corrigindo isso. :-)

Rodrigo Strauss
http://www.1bit.com.br

2010/5/16 Dimas Kotvan <dimas....@gmail.com>:
> Olá Rodrigo,
>
> Primeiro,  parabéns pela iniciativa, Estive ontem no encontro NoSQL e
> assisti sua palestra.
>
> Estou tentando compilar o Tio, última versão que estava no Mercurial,
> em um Ubuntu 10.04 x64 e  não estou tendo muito sucesso.
>
> Alterei o CMakeLists.txt para remover a dependencia com o
> DataStore.cpp, que não existe, e rodei
>
> cmake -G  "Unix Makefiles"
>
> e depois
>
> make
>
> O resultado foi:
>
> Scanning dependencies of target tio
> [ 20%] Building CXX object CMakeFiles/tio.dir/Command.cpp.o
> [ 40%] Building CXX object CMakeFiles/tio.dir/TioTcpServer.cpp.o
> /home/dkotvan/work/tio/tio/TioTcpServer.cpp: In member function ‘void
> tio::TioTcpServer::RemoveClient(boost::shared_ptr<tio::TioTcpSession>)’:
> /home/dkotvan/work/tio/tio/TioTcpServer.cpp:62: error: cast from
> ‘tio::TioTcpSession*’ to ‘int’ loses precision
> /home/dkotvan/work/tio/tio/TioTcpServer.cpp: In member function ‘void
> tio::TioTcpServer::OnAccept(boost::shared_ptr<tio::TioTcpSession>,
> const boost::system::error_code&)’:
> /home/dkotvan/work/tio/tio/TioTcpServer.cpp:148: error: cast from
> ‘tio::TioTcpSession*’ to ‘int’ loses precision
> /home/dkotvan/work/tio/tio/TioTcpServer.cpp: In member function ‘void
> tio::TioTcpServer::OnCommand(tio::Command&, std::ostream&, size_t*,
> boost::shared_ptr<tio::TioTcpSession>)’:
> /home/dkotvan/work/tio/tio/TioTcpServer.cpp:190: error: cast from
> ‘tio::TioTcpSession*’ to ‘int’ loses precision
> make[2]: *** [CMakeFiles/tio.dir/TioTcpServer.cpp.o] Error 1
> make[1]: *** [CMakeFiles/tio.dir/all] Error 2
> make: *** [all] Error 2
>
> Tem alguma flag do gcc que eu devo setar para conseguir compilar e não
> ter esse erro?
>
> Abs,
> Dimas Kotvan
>

Wilton de Oliveira Garcia

unread,
May 27, 2010, 9:15:07 PM5/27/10
to Tio Project Brasil
Consegui fazer uma "receita de bolo" para compilar no Ubuntu 10.04,
montei uma virtual machine zerada sem instalar nada e precisei apenas
dos comandos abaixo:

Install Linux
sudo apt-get update
sudo apt-get install mercurial subversion make cmake libboost-all-dev
build-essential
svn checkout http://google-perftools.googlecode.com/svn/trunk/ google
cd google/
./configure
make
make install
sudo make install
cd ..
hg clone https://tio.googlecode.com/hg/ tio
cd tio/tio
cmake . && make

Agora estou tentando fazer para o Mac, mas estou com alguns problemas:

-- Configuring done
-- Generating done
-- Build files have been written to: /Users/wiltondeoliveiragarcia/tio/
tio
wilton:tio wiltondeoliveiragarcia$ sudo make
Scanning dependencies of target tio
[ 16%] Building CXX object CMakeFiles/tio.dir/Command.cpp.o
[ 33%] Building CXX object CMakeFiles/tio.dir/ContainerManager.cpp.o
[ 50%] Building CXX object CMakeFiles/tio.dir/TioTcpServer.cpp.o
[ 66%] Building CXX object CMakeFiles/tio.dir/TioTcpSession.cpp.o
[ 83%] Building CXX object CMakeFiles/tio.dir/pch.cpp.o
[100%] Building CXX object CMakeFiles/tio.dir/tio.cpp.o
In file included from /Users/wiltondeoliveiragarcia/tio/tio/
LogDbStorage.h:3,
from /Users/wiltondeoliveiragarcia/tio/tio/tio.cpp:7:
/Users/wiltondeoliveiragarcia/tio/tio/logdb.h: In member function
‘bool logdb::File::Open(const char*)’:
/Users/wiltondeoliveiragarcia/tio/tio/logdb.h:117: error: ‘O_DIRECT’
was not declared in this scope
/Users/wiltondeoliveiragarcia/tio/tio/logdb.h: In member function
‘unsigned int logdb::File::Write(void*, unsigned int)’:
/Users/wiltondeoliveiragarcia/tio/tio/logdb.h:129: error: ‘fdatasync’
was not declared in this scope
In file included from /Users/wiltondeoliveiragarcia/tio/tio/tio.cpp:7:
/Users/wiltondeoliveiragarcia/tio/tio/LogDbStorage.h: In member
function ‘virtual void
tio::LogDbStorage::LogDbVectorStorage::Set(const tio::TioData&, const
tio::TioData&, const tio::TioData&)’:
/Users/wiltondeoliveiragarcia/tio/tio/LogDbStorage.h:213: error:
conversion from ‘long int’ to ‘const tio::TioData’ is ambiguous
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:124: note:
candidates are: tio::TioData::TioData(const char*, bool)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:106:
note: tio::TioData::TioData(double)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:100:
note: tio::TioData::TioData(int)
/Users/wiltondeoliveiragarcia/tio/tio/LogDbStorage.h: In member
function ‘virtual void
tio::LogDbStorage::LogDbVectorStorage::Insert(const tio::TioData&,
const tio::TioData&, const tio::TioData&)’:
/Users/wiltondeoliveiragarcia/tio/tio/LogDbStorage.h:246: error:
conversion from ‘long int’ to ‘const tio::TioData’ is ambiguous
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:124: note:
candidates are: tio::TioData::TioData(const char*, bool)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:106:
note: tio::TioData::TioData(double)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:100:
note: tio::TioData::TioData(int)
/Users/wiltondeoliveiragarcia/tio/tio/LogDbStorage.h: In member
function ‘virtual void
tio::LogDbStorage::LogDbVectorStorage::Delete(const tio::TioData&,
const tio::TioData&, const tio::TioData&)’:
/Users/wiltondeoliveiragarcia/tio/tio/LogDbStorage.h:292: error:
conversion from ‘long int’ to ‘const tio::TioData’ is ambiguous
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:124: note:
candidates are: tio::TioData::TioData(const char*, bool)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:106:
note: tio::TioData::TioData(double)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:100:
note: tio::TioData::TioData(int)
/Users/wiltondeoliveiragarcia/tio/tio/LogDbStorage.h:292: error:
conversion from ‘long int’ to ‘const tio::TioData’ is ambiguous
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:124: note:
candidates are: tio::TioData::TioData(const char*, bool)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:106:
note: tio::TioData::TioData(double)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:100:
note: tio::TioData::TioData(int)
/Users/wiltondeoliveiragarcia/tio/tio/LogDbStorage.h:300: error:
conversion from ‘long int’ to ‘const tio::TioData’ is ambiguous
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:124: note:
candidates are: tio::TioData::TioData(const char*, bool)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:106:
note: tio::TioData::TioData(double)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:100:
note: tio::TioData::TioData(int)
/Users/wiltondeoliveiragarcia/tio/tio/LogDbStorage.h:300: error:
conversion from ‘long int’ to ‘const tio::TioData’ is ambiguous
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:124: note:
candidates are: tio::TioData::TioData(const char*, bool)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:106:
note: tio::TioData::TioData(double)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:100:
note: tio::TioData::TioData(int)
/Users/wiltondeoliveiragarcia/tio/tio/LogDbStorage.h: In member
function ‘virtual void
tio::LogDbStorage::LogDbVectorStorage::GetRecord(const tio::TioData&,
tio::TioData*, tio::TioData*, tio::TioData*)’:
/Users/wiltondeoliveiragarcia/tio/tio/LogDbStorage.h:340: error:
conversion from ‘long int’ to ‘const tio::TioData’ is ambiguous
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:124: note:
candidates are: tio::TioData::TioData(const char*, bool)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:106:
note: tio::TioData::TioData(double)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:100:
note: tio::TioData::TioData(int)
/Users/wiltondeoliveiragarcia/tio/tio/LogDbStorage.h:340: error:
conversion from ‘long int’ to ‘const tio::TioData’ is ambiguous
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:124: note:
candidates are: tio::TioData::TioData(const char*, bool)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:106:
note: tio::TioData::TioData(double)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:100:
note: tio::TioData::TioData(int)
make[2]: *** [CMakeFiles/tio.dir/tio.cpp.o] Error 1
make[1]: *** [CMakeFiles/tio.dir/all] Error 2
make: *** [all] Error 2


--
Wilton de Oliveira Garcia


On May 16, 3:17 pm, Rodrigo Strauss <rodr...@1bit.com.br> wrote:
> Dê um update no código, deve estar funcionando agora. Tinha até um
> TODO no código para resolver isso.
>
> Testei ontem no Ubuntu e o Tio não estava rodando em debug no Linux,
> parava em um ASSERT dentro do logdb.h, que é o log de transações. Se
> você tiver problemas com isso, rode em Release (cmake
> -DCMAKE_BUILD_TYPE=Release) e não use o os containers do tipo
> persistent por enquanto. Já estou corrigindo isso. :-)
>
> Rodrigo Strausshttp://www.1bit.com.br
>
> 2010/5/16 Dimas Kotvan <dimas.kot...@gmail.com>:

Rodrigo Strauss

unread,
May 28, 2010, 1:09:07 PM5/28/10
to tio-proje...@googlegroups.com
O erro no O_DIRECT não deve ocorrer mais se você atualizar os fontes,
não uso mais isso nem no Linux.

Sobre o fdatasync não encontrado, parece que o Mac OS X não tem essa
função. Fiz umas correções, mas não tenho um MacOS para testar. Você
pode rodar os patches em anexo e testar?

Rodrigo Strauss
http://www.1bit.com.br

2010/5/27 Wilton de Oliveira Garcia <wilt...@gmail.com>:

macosx.hgpatch

Wilton de Oliveira Garcia

unread,
May 28, 2010, 7:31:13 PM5/28/10
to tio-proje...@googlegroups.com
Rodrigo,

Rodei as alterações, abaixo lista de erros:

Scanning dependencies of target tio
[ 16%] Building CXX object CMakeFiles/tio.dir/Command.cpp.o
[ 33%] Building CXX object CMakeFiles/tio.dir/ContainerManager.cpp.o
[ 50%] Building CXX object CMakeFiles/tio.dir/TioTcpServer.cpp.o
In file included from /Users/wiltondeoliveiragarcia/tio/tio/TioTcpServer.h:7,
                 from /Users/wiltondeoliveiragarcia/tio/tio/TioTcpServer.cpp:2:
/Users/wiltondeoliveiragarcia/tio/tio/TioTcpProtocol.h: In function ‘void tio::SetTioData(tio::TioData*, const tio::FieldInfo&, const unsigned char*)’:
/Users/wiltondeoliveiragarcia/tio/tio/TioTcpProtocol.h:137: error: call of overloaded ‘Set(int)’ is ambiguous
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:367: note: candidates are: void tio::TioData::Set(long int)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:374: note:                 void tio::TioData::Set(double)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:398: note:                 void tio::TioData::Set(const std::string&) <near match>
/Users/wiltondeoliveiragarcia/tio/tio/TioTcpServer.cpp: In member function ‘void tio::TioTcpServer::OnModify(tio::Command&, std::ostream&, size_t*, boost::shared_ptr<tio::TioTcpSession>)’:
/Users/wiltondeoliveiragarcia/tio/tio/TioTcpServer.cpp:1013: error: call of overloaded ‘Set(int)’ is ambiguous
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:367: note: candidates are: void tio::TioData::Set(long int)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:374: note:                 void tio::TioData::Set(double)
/Users/wiltondeoliveiragarcia/tio/tio/Container.h:398: note:                 void tio::TioData::Set(const std::string&) <near match>
make[2]: *** [CMakeFiles/tio.dir/TioTcpServer.cpp.o] Error 1
make[1]: *** [CMakeFiles/tio.dir/all] Error 2
make: *** [all] Error 2

Wilton
Desenvolvedor Web
Cel : 61321326

Rodrigo Strauss

unread,
May 31, 2010, 9:14:15 AM5/31/10
to tio-proje...@googlegroups.com
Seu Mac OS é 64 bits?

Rodrigo Strauss
http://www.1bit.com.br

2010/5/28 Wilton de Oliveira Garcia <wilt...@gmail.com>:

Wilton de Oliveira Garcia

unread,
May 31, 2010, 9:18:03 AM5/31/10
to tio-proje...@googlegroups.com
Sim, Uso o Snow Leopard

Wilton

Rodrigo Strauss

unread,
May 31, 2010, 9:26:29 AM5/31/10
to tio-proje...@googlegroups.com
Vou pedir mais um favor para você. :-)

Compile a última versão do hg *sem os patchs* e mande os erros em um
txt anexo (o gmail quebra as linhas do texto).

Eu sei qual é o problema (o long int do snow leopard é 64bits) mas
preciso ver como vou resolver isso e manter tudo compatível com a
versão 32 bits.

Rodrigo Strauss
http://www.1bit.com.br


2010/5/31 Wilton de Oliveira Garcia <wilt...@gmail.com>:

Wilton de Oliveira Garcia

unread,
May 31, 2010, 10:33:01 AM5/31/10
to tio-proje...@googlegroups.com
Rodrigo,

Anexo txt, se precisar de mais algo é só avisar...

Valeu!!

Wilton
makeerrors.txt

Rodrigo Strauss

unread,
May 31, 2010, 10:58:59 AM5/31/10
to tio-proje...@googlegroups.com
Vamos ver se agora resolve. No caso do LogDbStorage, além de erro de
compilação era um bug...
snow_patch.txt
Reply all
Reply to author
Forward
0 new messages