Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Azathothas opened this issue Feb 20, 2024 · 4 comments
Open

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

Azathothas opened this issue Feb 20, 2024 · 4 comments

Comments

@Azathothas
Copy link

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/BurntSushi/ripgrep/releases/download/14.1.0/ripgrep-14.1.0-aarch64-unknown-linux-gnu.tar.gz
$ file rg && ldd rg
rg: 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]=62e25ad353379dfb4ddf3c94be5e00cd086d56d5, stripped
        linux-vdso.so.1 (0x0000ffffa91df000)
        libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000ffffa8c40000)
        libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000ffffa8c20000)
        libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000ffffa8c00000)
        libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffffa8a50000)
        /lib/ld-linux-aarch64.so.1 (0x0000ffffa91a6000)
$ du -sh rg
5.2M    rg

Adding target: aarch64-unknown-linux-musl in https://github.com/BurntSushi/ripgrep/blob/master/.github/workflows/release.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/ripgrep.sh

$ file "./target/$RUST_TARGET/release/rg"
./target/aarch64-unknown-linux-musl/release/rg: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped
$ du -sh "./target/$RUST_TARGET/release/rg"
4.0M    ./target/aarch64-unknown-linux-musl/release/rg
@BurntSushi
Copy link
Owner

I'd be okay with adding this target in a way that matches the configuration of everything else. (The question of whether to enable LTO or not has been discussed a few times before. I remain reluctant to enable it for releases.)

@tzq0301
Copy link

tzq0301 commented Jun 6, 2024

Any progress about this issue? It's really helpful in some specific situations.

@BurntSushi
Copy link
Owner

Please don't ask for progress updates. If there was an update, you would see it here or linked from here.

@tzq0301
Copy link

tzq0301 commented Jun 6, 2024

Maybe this helpful? #2834

The output (the artifact) can be well worked on my aarch64 Debian VM.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants