LINUX.ORG.RU

Ответ на: комментарий от TeopeTuK

Без библиотеки он запустится и тут же упадёт.

Не запускаться он может либо если он не является исполняемым, либо если раздел, на котором он лежит, запрещает исполнение исполняемых файлов.

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

Если бы библиотеки не хватало, бинарь высрал бы трейс и упал в сегфолт. Или просто упал бы в сегфолт.

Какой дичайший бред.

Даже если библиотека загружается динамически, программа упадёт в сегфолт тогда и только тогда, когда её горе-писатель не проверяет результат на NULL. Это на самом деле более редкая ситуация, чем кажется. Особенно в системных пакетах.

При статической линковке и отсутствующей библиотеке программа даже не начнёт исполняться.

Не распространяй дезинформацию.

E ★★★ ()

Я таки воспроизвёл

bash: ./icecat: No such file or directory

на ArchLinux )

Удаляем /usr/lib64/ld-linux-x86-64.so.2 (который ссылка на ld-2.33.so) и получаем такое сообщение )

Toxo2 ★★ ()
Ответ на: комментарий от Keltir

точно статической?

А, ну да, май бэд. Я имел в виду связывание в рантайме и во время компиляции, конечно. Работать в пятницу после работы очень вредно.

E ★★★ ()

Вообще это позор, что в 2021 году в линуксе выводится настолько обскурное сообщение, когда не удается найти либу, с которой слинкован запускаемый бинарь.

Если он собран для FHS дистра, попробуй steam-run, авось зависимостей стима ему хватит.

shatsky ★★ ()
Последнее исправление: shatsky (всего исправлений: 2)

В NixOS нет динамического линковщика в /usr/lib или /lib (вообще этих директорий нет), а glibc требует явно указывать местоположение ld в ELF. Есть несколько вариантов решения:

  1. Использовать пакет icecat-bin из nixpkgs, возможно подсунув ему твой бинарник, и тогда туда будут вpatchelf-ены правильные пути до ld и библиотек (*);
  2. Самому руками поработать patchelf-ом и прописать нужные пути;
  3. Использовать обертку которая подсунет линковщик и библиотеки, например steam-run;
  4. Запускать в контейнере с обычным линуксовым юзерлендом внутри, и пробрасывать X11/wayland и звук.

(*): использовать примерно так: nix-shell -p 'icecat-bin.overrideAttrs (_: { src = ./my-icecat-tarball.tar.gz; })', это даст тебе шелл в котором должен быть icecat в $PATH.

balsoft ★★ ()
Последнее исправление: balsoft (всего исправлений: 1)