denisidoro / navi

An interactive cheatsheet tool for the command-line
Apache License 2.0
14.61k stars 489 forks source link

Provide Statically Compiled Binaries for (aarch64|arm64) Linux #883

Open Azathothas opened 4 months ago

Azathothas commented 4 months ago

Hi, the current releases for arm64 Linux is based on gnu and not musl. As a result, the binary is dynamically linked:

$ https://github.com/denisidoro/navi/releases/download/v2.23.0/navi-v2.23.0-aarch64-unknown-linux-gnu.tar.gz
$ file navi && ldd navi
navi: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=9cc810551f8c0912e85d081356dec8294532539e, with debug_info, not stripped
        linux-vdso.so.1 (0x0000ffffa28a7000)
        libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000ffffa2550000)
        libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000ffffa2530000)
        libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000ffffa2510000)
        libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffffa2360000)
        /lib/ld-linux-aarch64.so.1 (0x0000ffffa286e000)

$ du -sh navi && ldd navi
8.2M    navi

Adding target: aarch64-unknown-linux-musl in https://github.com/denisidoro/navi/blob/master/.github/workflows/cd.yml should work.

However, you can release an even more optimized & smaller binary, based on : https://github.com/Azathothas/Toolpacks/blob/main/.github/scripts/aarch64_Linux/bins/navi.sh

$ file "./target/$RUST_TARGET/release/navi"
./target/aarch64-unknown-linux-musl/release/navi: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped

$ du -sh "./target/$RUST_TARGET/release/navi"
2.4M    ./target/aarch64-unknown-linux-musl/release/navi
welcome[bot] commented 4 months ago

Thanks for opening your first issue here! In case you're facing a bug, please update navi to the latest version first. Maybe the bug is already solved! :)