rust-or / highs-sys

Rust binding for the HiGHS linear programming solver
https://docs.rs/highs-sys
10 stars 16 forks source link

Linking error #18

Open tprodanov opened 1 year ago

tprodanov commented 1 year ago

I enountered a problem with building a rust program with highs dependency. Currently, if I try to build a very small app, Cargo.toml:

[dependencies]
highs-sys = "1.5.3"

main.rs:

fn main() {
    let problem = unsafe { highs_sys::Highs_create() };
}

highs-sys is built without problems, but cannot be linked with the main app, generating LD errors ld: error: undefined symbol: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&&).

The server is CentOS Linux 7, and it has g++ (GCC) 11.1.0, gcc (GCC) 11.1.0, and GNU ld version 2.27-44.base.el7_9.1.

I tried to modify highs-sys build.rs script, but without success for now. One additional note: I could not compile HiGHS using clang, as it produces this error:

HiGHS/extern/zstr/zstr.hpp:439:23: error: attempt to use a deleted function
  439 |         std::istream::operator=(std::istream(rdbuf()));

I also tried to compile with older g++/gcc versions (8.1.0), but it produced the same problems. What could be the possible next steps?

jajhall commented 1 year ago

Strange: zstr is not part of HiGHS, and we've never had any problems with it before. Perhaps we need to update the version we're using. Any thoughts @svigerske?

svigerske commented 1 year ago

For the linking issue, it may help to see the full build log, so one could get some idea what may have left to this issue. Otherwise, it's even more guessing around.

Updating zstr should help for the 2nd issue, because it would disable the code in question: https://github.com/mateidavid/zstr/pull/61 It looks like zstr is using some C++11 feature (https://en.cppreference.com/w/cpp/io/basic_istream/operator%3D) that some very old compilers do not implement.