StefanSalewski / rust-chess

Port of salewski-chess from Nim to Rust
MIT License
2 stars 1 forks source link

can not compile on Linux : solved (?) #3

Open tissatussa opened 7 months ago

tissatussa commented 7 months ago

as i stated in the Issue https://github.com/StefanSalewski/salewski-chess/issues/4 of your "salewski-chess" project (=same engine in the Nim language) i was not able to compile your rust-chess engine on Linux (i'm on Xubuntu 22.04, called "Jammy Jellyfish") .. in one of the comments of this Issue you suggested to take a look at https://users.rust-lang.org/t/gtk4-example-graphics-code-please/109136/3 for a solution : indeed i have the same problem as user Austin .. he says my GTK4 version is 4.6.9 but 4.10 seems required .. so i did the same as he, i removed the option features = ["v4_12"] from the Cargo.toml file .. then compiling went well : i get a valid binary called rust-chess of 474.6 Kb in /target/release.

at https://gtk-rs.org/gtk4-rs/stable/latest/book/installation_linux.html i found what's needed to compile :

Debian and derivatives: (=also Xubuntu)
sudo apt install libgtk-4-dev build-essential

when i look into my Synaptic package manager, i see my libgtk-4-dev version 4.6.9+ds-0ubuntu0.22.04.1, which is also mentioned at https://launchpad.net/ubuntu/+source/gtk4 for Jammy Jellyfish (22.04).

Note: at first i got some errors and texts which suggested things to change and install .. i think i have all of them, but not the environment variable PKG_CONFIG_PATH (on Linux we can show all environment variables by the command printenv) : one of the error texts said that i had to set this environment variable to the "parent path" of the file gtk4.pc, which i found in the folder /usr/lib/x86_64-linux-gnu/pkgconfig/ .. so i could do export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/ (which i tried at first) but this wasn't needed : without this the compiling also went OK : only removing the features option seems needed for me to solve the compile error(s).

tissatussa commented 7 months ago

more info :

$ rustc -V
rustc 1.79.0-nightly (c9f8f3438 2024-03-27)

$ rustup show
Default host: x86_64-unknown-linux-gnu
rustup home:  /home/roelof/.rustup

installed toolchains
--------------------

stable-x86_64-unknown-linux-gnu (default)
nightly-x86_64-unknown-linux-gnu
1.64.0-x86_64-unknown-linux-gnu
1.69.0-x86_64-unknown-linux-gnu

active toolchain
----------------

nightly-x86_64-unknown-linux-gnu (directory override for '/home/roelof/Compiled/rust-chess')
rustc 1.79.0-nightly (c9f8f3438 2024-03-27)
tissatussa commented 7 months ago

i don't know if Nightly is requierd .. i can try again with the stable Rust version ?

StefanSalewski commented 7 months ago

i get a valid binary called rust-chess of 474.6 Kb

Fine that you managed to compile it. Rust binaries are indeed large -- for Nim I managed two years ago to get a binary size of only 100k. But I think it has become better already, some years ago executable size was in the megabyte range. And note, that only the first compile takes that long in Rust, due to working incremental compilation a recompile is very fast. I will fix your issue and the unneeded "features" request in Cargo.toml soon.