T
T
The_Immortal2019-04-15 02:57:11
CentOS
The_Immortal, 2019-04-15 02:57:11

Building libtorrent under CentOS 7?

Greetings!
Gentlemen, firstly, I apologize if I ask for help in the wrong place, and secondly, I emphasize that I am absolutely green in Linux'ah.
There was a need to build the current qbittorent for CentOS 7, because the existing package for CentOS is quite dense.
I found an instruction in which there are two stages:
- building libtorrent ;
- build qbittorent.
At the build stage of libtorrent-1.2.0, the following errors got out:

spoiler
[[email protected] libtorrent-rasterbar-1.2.0]# make
Making all in include/libtorrent
make[1]: Entering directory `/root/libtorrent-rasterbar-1.2.0/include/libtorrent'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/root/libtorrent-rasterbar-1.2.0/include/libtorrent'
Making all in src
make[1]: Entering directory `/root/libtorrent-rasterbar-1.2.0/src'
  CXX      libtorrent_rasterbar_la-web_connection_base.lo
In file included from ../include/libtorrent/entry.hpp:76:0,
                 from ../include/libtorrent/settings_pack.hpp:36,
                 from ../include/libtorrent/aux_/session_settings.hpp:37,
                 from ../include/libtorrent/peer_connection.hpp:53,
                 from ../include/libtorrent/web_connection_base.hpp:42,
                 from web_connection_base.cpp:38:
../include/libtorrent/string_view.hpp:60:24: error: missing space between ‘""and suffix identifier
  constexpr string_view operator""_sv(char const* str, std::size_t len)
                        ^
In file included from ../include/libtorrent/settings_pack.hpp:36:0,
                 from ../include/libtorrent/aux_/session_settings.hpp:37,
                 from ../include/libtorrent/peer_connection.hpp:53,
                 from ../include/libtorrent/web_connection_base.hpp:42,
                 from web_connection_base.cpp:38:
../include/libtorrent/entry.hpp: In member function ‘typename libtorrent::aux::map_string<T>::base::iterator libtorrent::aux::map_string<T>::find(const string_view&)’:
../include/libtorrent/entry.hpp:110:33: error: ‘const string_view’ has no member named ‘to_string’
     return this->base::find(key.to_string());
                                 ^
../include/libtorrent/entry.hpp: In member function ‘typename libtorrent::aux::map_string<T>::base::const_iterator libtorrent::aux::map_string<T>::find(const string_view&) const’:
../include/libtorrent/entry.hpp:115:33: error: ‘const string_view’ has no member named ‘to_string’
     return this->base::find(key.to_string());
                                 ^
In file included from ../include/libtorrent/aux_/session_settings.hpp:37:0,
                 from ../include/libtorrent/peer_connection.hpp:53,
                 from ../include/libtorrent/web_connection_base.hpp:42,
                 from web_connection_base.cpp:38:
../include/libtorrent/settings_pack.hpp: At global scope:
../include/libtorrent/settings_pack.hpp:93:18: error: function ‘libtorrent::settings_pack& libtorrent::settings_pack::operator=(libtorrent::settings_pack&&)’ defaulted on its first declaration with an exception-specification that differs from the implicit declaration ‘libtorrent::settings_pack& libtorrent::settings_pack::operator=(libtorrent::settings_pack&&)’
   settings_pack& operator=(settings_pack&&) noexcept = default;
                  ^
In file included from ../include/libtorrent/torrent_info.hpp:52:0,
                 from ../include/libtorrent/torrent.hpp:48,
                 from ../include/libtorrent/web_connection_base.hpp:43,
                 from web_connection_base.cpp:38:
../include/libtorrent/file_storage.hpp:64:15: error: function ‘libtorrent::file_entry& libtorrent::file_entry::operator=(libtorrent::file_entry&&) &’ defaulted on its first declaration with an exception-specification that differs from the implicit declaration ‘libtorrent::file_entry& libtorrent::file_entry::operator=(libtorrent::file_entry&&)’
   file_entry& operator=(file_entry&&) & noexcept = default;
               ^
In file included from ../include/libtorrent/aux_/socket_type.hpp:41:0,
                 from ../include/libtorrent/utp_socket_manager.hpp:39,
                 from ../include/libtorrent/aux_/session_udp_sockets.hpp:36,
                 from ../include/libtorrent/aux_/session_interface.hpp:46,
                 from ../include/libtorrent/ip_voter.hpp:40,
                 from ../include/libtorrent/peer_list.hpp:47,
                 from ../include/libtorrent/torrent.hpp:51,
                 from ../include/libtorrent/web_connection_base.hpp:43,
                 from web_connection_base.cpp:38:
../include/libtorrent/i2p_stream.hpp: In member function ‘void libtorrent::i2p_stream::set_destination(libtorrent::string_view)’:
../include/libtorrent/i2p_stream.hpp:105:51: error: ‘using string_view = boost::string_ref’ has no member named ‘to_string’
  void set_destination(string_view d) { m_dest = d.to_string(); }
                                                   ^
make[1]: *** [libtorrent_rasterbar_la-web_connection_base.lo] Error 1
make[1]: Leaving directory `/root/libtorrent-rasterbar-1.2.0/src'
make: *** [all-recursive] Error 1

Googled but didn't find any solutions. Help, please, to understand.
Thank you!

Answer the question

In order to leave comments, you need to log in

[[+comments_count]] answer(s)
G
Georg Gaal, 2019-04-15
@gecube

For starters, try a more recent tooling (compiler, header files, etc.) for the build.
The second advice - theoretically, if all the dependencies are packed inside, then you can build the library on some kind of ubuntu, and then transfer it to CentOS.

C
CityCat4, 2019-04-15
@CityCat4

Building anything in centos is such fun that without knowing how programs are built in linux in general, it will turn into a very exciting educational program for learning the compiler, linker, autotools / cmake (depending on what you use), make...
If you don't want to upgrade skills in full immersion mode, look for a third-party turnip where this package is available (someone will probably collect a rather popular package) and connect it. And for starters, connect large third-party turnips like epel, elgis, lux, rpmforge

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question