You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+18-5Lines changed: 18 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,7 @@
1
1
# sharun
2
-
Run dynamically linked ELF binaries everywhere (musl and glibc are supported)
2
+
Run dynamically linked ELF binaries everywhere (musl and glibc are supported).
3
+
* This works with [userland-execve](https://github.com/io12/userland-execve-rust) by mapping the interpreter (such as ld-linux-x86-64.so.2) into memory, creating a stack for it (containing the auxiliary vector, arguments, and environment variables), and then jumping to the entry point with the new stack.
4
+
*[lib4bin](https://github.com/VHSgunzo/sharun/blob/main/lib4bin) pulls out the binary file and all the libraries on which it depends, strip it (you can disable it with `STRIP=0` env var, see [lib4bin](https://github.com/VHSgunzo/sharun/blob/main/lib4bin#L15)) and forms the `bin`, `shared/{bin,lib,lib32}` directories (see [screenshots](https://github.com/VHSgunzo/sharun?tab=readme-ov-file#screenshots)) and generate a file `shared/{lib,lib32}/lib.path` with a list of all directories that contain libraries for pass it to interpreter `--library-path`. The paths in this file are specified on a new line with a `+` at the beginning and relative to the directory in which it is located.
3
5
4
6
## Supported architectures:
5
7
* aarch64
@@ -34,23 +36,34 @@ cargo build --release
34
36
| -h, --help Print help
35
37
|
36
38
[ Environments ]:
37
-
| SHARUN_LDNAME=ld.so Specifies the name of the linker
39
+
| SHARUN_LDNAME=ld.so Specifies the name of the interpreter
0 commit comments