On 21/04/2016 10:36, Дмитрий Марков wrote:
Hello, I updated my cygwin yesterday, because I found strange bug when using boost::asio::ip::tcp::socket for sending some text information(some information became broken). I haven't got such bug under my Linux OS, so I decide upgrade the cygwin. After successful updating of cygwin I can't build my project.
The cygwin header has been recently update and reshuffled.
The first error of compiler is: In file included from /usr/include/boost/thread/thread_time.hpp:10:0, from /usr/include/boost/thread/lock_types.hpp:18, from /usr/include/boost/thread/pthread/thread_data.hpp:12, from /usr/include/boost/thread/thread_only.hpp:17, from /usr/include/boost/thread/thread.hpp:12, from ../src/DoubleChannelCalculations.hpp:21, from ../src/DoubleChannelCalculations.cpp:14: /usr/include/boost/date_time/microsec_time_clock.hpp: In static member function 'static time_type boost::date_time::microsec_clock<time_type>::create_time(boost::date_time::microsec_clock<time_type>::time_converter)': /usr/include/boost/date_time/microsec_time_clock.hpp:84:26: error: there are no arguments to 'gettimeofday' that depend on a template parameter, so a declaration of 'gettimeofday' must be available [-fpermissive] gettimeofday(&tv, 0); //gettimeofday does not support TZ adjust on Linux.
The definition is in /usr/include/sys/time.h protected by #if __MISC_VISIBLE || __XSI_VISIBLE
The second error message: /usr/include/boost/date_time/microsec_time_clock.hpp:84:26: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated) In file included from /usr/include/boost/asio/detail/signal_blocker.hpp:25:0, from /usr/include/boost/asio/detail/impl/select_reactor.ipp:29, from /usr/include/boost/asio/detail/select_reactor.hpp:212, from /usr/include/boost/asio/detail/reactor.hpp:29, from /usr/include/boost/asio/detail/impl/task_io_service.ipp:24, from /usr/include/boost/asio/detail/task_io_service.hpp:198, from /usr/include/boost/asio/impl/io_service.hpp:71, from /usr/include/boost/asio/io_service.hpp:767, from ../src/PrintPlots.hpp:17, from ../src/DoubleChannelCalculations.cpp:19: /usr/include/boost/asio/detail/posix_signal_blocker.hpp: In constructor 'boost::asio::detail::posix_signal_blocker::posix_signal_blocker()': /usr/include/boost/asio/detail/posix_signal_blocker.hpp:42:25: error: 'sigfillset' was not declared in this scope sigfillset(&new_mask);
in /usr/include/sys/signal.h protected by #if __BSD_VISIBLE || __XSI_VISIBLE >= 4
I have tried to use -fpermissive, but it's not help me. I also have tried to add define _GNU_SOURCE, _POSIX_C_SOURCE=200809L, _XOPEN_SOURCE=700. If I define _GNU_SOURCE or _XOPEN_SOURCE=700 the project build successful, but it's not work, because boost::asio::ip::tcp::socket raise exception that socket.available() is not supported(but it was). I also try full reinstall of cygwin, but it's not help. I attached output of command "cygcheck -s -v -r". What it may be the problem and how I may resolve it?
try using __XSI_VISIBLE=4 -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple