Archived
This forum has been archived. Please start a new discussion on GitHub.
ICE3.3.1:Cond.cpp:311: error: `CLOCK_MONOTONIC'
Hi,guys!
I am trying to intall ICE3.3.1 on Turbo8 32bit。
I had built all the third party libraries required by Ice 3.3.1 without any problems, and I alst updated GCC to 3.4.6。
When i build the ICE, I got some errors。
[PHP]c++ -c -I../../include -DICE_UTIL_API_EXPORTS -I.. -ftemplate-depth-128 -Wall -D_REENTRANT -I/usr/include/nptl -fPIC -g Cond.cpp
Cond.cpp: In constructor `IceUtil::Cond::Cond()':
Cond.cpp:311: error: `CLOCK_MONOTONIC' was not declared in this scope
Cond.cpp:311: error: `pthread_condattr_setclock' was not declared in this scope
Cond.cpp:311: warning: unused variable 'CLOCK_MONOTONIC'
Cond.cpp:311: warning: unused variable 'pthread_condattr_setclock'
make[2]: *** [Cond.o] Error 1[/PHP]
I found this thread which got the same problem. He did some fixes in the source code and solved the problem, but I donot know how to fix it particularly.
What can I do if I want to use the new version ICE on turbo8.
Thanks!
I am trying to intall ICE3.3.1 on Turbo8 32bit。
I had built all the third party libraries required by Ice 3.3.1 without any problems, and I alst updated GCC to 3.4.6。
When i build the ICE, I got some errors。
[PHP]c++ -c -I../../include -DICE_UTIL_API_EXPORTS -I.. -ftemplate-depth-128 -Wall -D_REENTRANT -I/usr/include/nptl -fPIC -g Cond.cpp
Cond.cpp: In constructor `IceUtil::Cond::Cond()':
Cond.cpp:311: error: `CLOCK_MONOTONIC' was not declared in this scope
Cond.cpp:311: error: `pthread_condattr_setclock' was not declared in this scope
Cond.cpp:311: warning: unused variable 'CLOCK_MONOTONIC'
Cond.cpp:311: warning: unused variable 'pthread_condattr_setclock'
make[2]: *** [Cond.o] Error 1[/PHP]
I found this thread which got the same problem. He did some fixes in the source code and solved the problem, but I donot know how to fix it particularly.
What can I do if I want to use the new version ICE on turbo8.
Thanks!
0
Comments
-
Hi,
Check the source code in Ice-3.3.1/cpp/src/IceUtil/Cond.cpp line 310. If your Linux distribution doesn't support monotonic clocks, you can change the #ifdef to not use them on your platform. An alternative would be to check if there's a nptl-devel package with your distribution and install it, it might provide support for monotonic clocks.
Cheers,
Benoit.0 -
Thanks for the advice.
I just deleted the few lines in the file Cond.cpp and Time.cpp。
It goes on, but I got the new problem:
[PHP]In file included from ../Ice/ThreadPool.h:24,
from ConnectRequestHandler.cpp:20:
../Ice/Selector.h:32:26: sys/epoll.h: No such file or directory
In file included from ../Ice/ThreadPool.h:24,
from ConnectRequestHandler.cpp:20:
../Ice/Selector.h: In constructor `IceInternal::Selector<T>::Selector(const IceInternal::InstancePtr&, int)':
../Ice/Selector.h:61: error: there are no arguments to `epoll_create' that depend on a template parameter, so a declaration of `epoll_create' must be available
../Ice/Selector.h:61: error: (if you use `-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
../Ice/Selector.h:70: error: `EPOLLIN' was not declared in this scope
../Ice/Selector.h:72: error: `EPOLL_CTL_ADD' was not declared in this scope
../Ice/Selector.h: In member function `void IceInternal::Selector<T>::add(T*, IceInternal::SocketStatus, bool)':
../Ice/Selector.h:151: error: `EPOLLIN' was not declared in this scope
../Ice/Selector.h:151: error: `EPOLLOUT' was not declared in this scope
../Ice/Selector.h:153: error: `EPOLL_CTL_ADD' was not declared in this scope
../Ice/Selector.h: In member function `void IceInternal::Selector<T>::update(T*, IceInternal::SocketStatus, IceInternal::SocketStatus)':
../Ice/Selector.h:193: error: `EPOLLIN' was not declared in this scope
../Ice/Selector.h:193: error: `EPOLLOUT' was not declared in this scope
../Ice/Selector.h:195: error: `EPOLL_CTL_MOD' was not declared in this scope
../Ice/Selector.h: In member function `void IceInternal::Selector<T>::remove(T*, IceInternal::SocketStatus, bool)':
../Ice/Selector.h:214: error: `EPOLL_CTL_DEL' was not declared in this scope
make[2]: *** [ConnectRequestHandler.o] Error 1
make[2]: Leaving directory `/tmp/test/Ice-3.3.1/cpp/src/Ice'
make[1]: *** [all] Error 1
make[1]: Leaving directory `/tmp/test/Ice-3.3.1/cpp/src'
make: *** [all] Error 1[/PHP]
I donot know what is funtion of the epoll.h, and there is not this file in my system.
How to fix it?0 -
Hi,
You can try compiling Ice with "make CPPFLAGS=-DICE_NO_EPOLL=1", but the best would be to use a supported Linux distribution or recent one as we don't support such old distributions and we won't be able to help if you have any issues.
See here for a list of supported Linux distributions.
If you have to use this distribution and need commercial support for it, please contact us at info@zeroc.com.
Cheers,
Benoit.0 -
Thanks,Benoit!
I had used the DICE_NO_EPOLL option, and it goes on.
I have got some new erros.
[PHP]Network.cpp:44:23: ifaddrs.h: No such file or directory
Network.cpp: In function `std::vector<sockaddr_storage, std::allocator<sockaddr_storage> > <unnamed>::getLocalAddresses(IceInternal::ProtocolSupport)':
Network.cpp:142: error: `::getifaddrs' has not been declared
Network.cpp:152: error: invalid use of undefined type `struct <unnamed>::ifaddrs'
Network.cpp:141: error: forward declaration of `struct <unnamed>::ifaddrs'
Network.cpp:152: error: invalid use of undefined type `struct <unnamed>::ifaddrs'
Network.cpp:141: error: forward declaration of `struct <unnamed>::ifaddrs'
Network.cpp:154: error: invalid use of undefined type `struct <unnamed>::ifaddrs'
Network.cpp:141: error: forward declaration of `struct <unnamed>::ifaddrs'
Network.cpp:157: error: invalid use of undefined type `struct <unnamed>::ifaddrs'
Network.cpp:141: error: forward declaration of `struct <unnamed>::ifaddrs'
Network.cpp:163: error: invalid use of undefined type `struct <unnamed>::ifaddrs'
Network.cpp:141: error: forward declaration of `struct <unnamed>::ifaddrs'
Network.cpp:166: error: invalid use of undefined type `struct <unnamed>::ifaddrs'
Network.cpp:141: error: forward declaration of `struct <unnamed>::ifaddrs'
Network.cpp:169: error: invalid use of undefined type `struct <unnamed>::ifaddrs'
Network.cpp:141: error: forward declaration of `struct <unnamed>::ifaddrs'
Network.cpp:174: error: invalid use of undefined type `struct <unnamed>::ifaddrs'
Network.cpp:141: error: forward declaration of `struct <unnamed>::ifaddrs'
Network.cpp:177: error: `::freeifaddrs' has not been declared
make[2]: *** [Network.o] Error 1
make[2]: Leaving directory `/tmp/test/Ice-3.3.1/cpp/src/Ice'
make[1]: *** [all] Error 1
make[1]: Leaving directory `/tmp/test/Ice-3.3.1/cpp/src'
make: *** [all] Error 1[/PHP]
I just found some advices from this thread and this one
They also told us that there is an alternate implementation for this question, either ioctl or SIOCGIFCONF.But i donot know how to do for the ICE-3.3.1.
Could you give me some ideas?0 -
Update.
I had made a few fixes in the source code and it complied well.
one fix in the Network.cpp:
[PHP]
43 #if defined(__linux) || defined(__APPLE__) || defined(__FreeBSD__)
44 /*# include <ifaddrs.h>*/
45 # include <sys/ioctl.h>
46 # include <net/if.h>
47 #elif defined(__sun)
48 # include <sys/sockio.h>
49 #endif[/PHP]
another one:
[PHP]142 //#elif defined(__linux) || defined(__APPLE__) || defined(__FreeBSD__)
143 #elif defined(__APPLE__) || defined(__FreeBSD__)[/PHP]
then , i compiled it and get a new error:
demo/Freeze/customEvictor/CurrentDatabase.cpp:thread-local storage not supported for this target
I had fixed it by this way:
in the file demo/Freeze/customEvictor/CurrentDatabase.cpp
[PHP] 29 //#if defined(__HP_aCC) || defined(__APPLE__)
30 #define USE_PTHREAD_KEY 1
31 //#endif[/PHP]
Then the ICE was compiled sucessfully.
I try to run one demo ,but there is another error.
Network.cpp:: Ice::DNSException:
DNS error: Servname not supported for ai_socktype
I fix it according to this thread.
Now , the demo can run without errors.
But i donot know whether the fixes i have done will bring some unpredictable consequence .0