qmule / libed2k

79 stars 27 forks source link

Compilation errors #4

Open felmur opened 5 years ago

felmur commented 5 years ago

Hi, i'm trying to compile your library under archlinux and I have got some errors. I think that those errors are related to newer version of boost library. First error:

/home/felice/libed2k/include/libed2k/error_code.hpp:174:29: error: ‘get_system_category’ is not a member of ‘boost::system’; did you mean ‘system_category’? 174 | { return boost::system::get_system_category(); } | ^~~~~~~~~~~~~~~~~~~ | system_category /home/felice/libed2k/include/libed2k/error_code.hpp: In function ‘const boost::system::error_category& libed2k::get_posix_category()’: /home/felice/libed2k/include/libed2k/error_code.hpp:181:29: error: ‘get_generic_category’ is not a member of ‘boost::system’; did you mean ‘generic_category’? 181 | { return boost::system::get_generic_category(); } | ^~~~~~~~~~~~~~~~~~~~ | generic_category

I solved these two errors by replacing "get_system_category" with "system_category" and "get_generic_category" with "generic_category".

The compilation goes on but stops again on the following error:

/home/felice/libed2k/src/broadcast_socket.cpp:284:69: error: no matching function for call to ‘boost::asio::basic_datagram_socket<boost::asio::ip::udp>::basic_datagram_socket(libed2k::io_service&)’ 284 | boost::shared_ptr<datagram_socket> s(new datagram_socket(ios)); | ^

Any ideas for this? Regards.

a-pavlov commented 5 years ago

Hi @felmur , is it possible for you to install appropriate boost version locally? As I see in travis file https://github.com/qmule/libed2k/blob/master/.travis.yml Boost 1.55 should be ok.

felmur commented 5 years ago

Hi @a-pavlov, my linux distro (Archlinux) only support boost 1.69. v1.55 is a very old version of boost, so I think that sources of libed2k should be updated to support new version of boost. What do you think about that? Is this possible?

Regards.

a-pavlov commented 5 years ago

@felmur You can download boost 1.55 https://www.boost.org/users/history/version_1_55_0.html and build it manually. About updating libed2k sources to support boost 1.69 - actually this project development is on hold and I don't know who will work on this. If you trying to solve compile error you can compare: https://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket.html with new https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket.html And as I see io_service was replaced with io_context for backward compatibility: Please check this link https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/reference/io_service.html and header file inlude/libed2k/io_service.hpp

isharov commented 5 years ago

@felmur, as an option, you could build libed2k inside isolated docker with boost 1.55 https://github.com/zouzias/docker-boost

felmur commented 5 years ago

thank you all for your help. I will try to do something to solve the compilation problem, but I have little hope of doing it. Thanks anyway to both of you for the information you gave me. Regards.

felmur commented 5 years ago

@isharov, I tried to do what you suggested (create a docker with boost <1.66 to compile libed2k) but I found the following problems using docker-boost:

1) it does not seem to be possible to install a docker with versions of boost 1.5 as they are no longer available on the site from which they must be downloaded 2) I tried several versions of boost 1.6 but for all the compilation of libed2k does not even start, as cmake challenges the lack of static libraries like boost-system and others.

Moreover, docker-boost seems to install some include files but not called libraries, which could only exist by compiling the entire boost package <1.66. In this case, it no longer makes sense to use a docker: I remove the boost library installed on my system and proceed to compile the package directly on my system.

Thanks anyway for letting me discover docker, which was a tool I didn't know.

Greetings

felmur commented 5 years ago

@a-pavlov, it seems that changes to libed2k sources to adapt to the new library boost are many and should be made by someone who has written a library, since it is necessary to overview the same for massive changes to the source. Thanks anyway for the quick answers.

Greetings

barracuda156 commented 1 year ago

Any updates on this? libed2k fails to build against Boost 1.76.