Что необходимо для запуска программы на Haskell в тюрьме

Я хочу запустить простую программу на Haskell из окруженной тюрьмой среды, которую я создаю сам. Я хочу запустить следующую программу на Haskell:

import System.IO

main = do
    hPutStrLn stderr "test standard error!"
    hPutStrLn stdout "test standard out!"

Он просто выводит строку в stderr и stdout, отлично работает за пределами тюрьмы. Код компилируется следующим образом:

ghc -O2 --make -static -optc-static -optl-static $MAINHS -optl-pthread -o bin/run_ai

Я получил исполняемый файл run_ai, который запускает программу, как я уже сказал, это прекрасно работает за пределами тюрьмы. Ниже приведен материал, который помещается в тюрьму, и я думаю, что здесь чего-то не хватает, потому что, когда я запускаю программу в тюрьме, она абсолютно ничего не делает, она даже не завершается, и никакие дампы ошибок / вывода вообще не выдаются.

mkdir -p lib64 lib bin

cp /bin/sh bin/

# Binaries
cp /lib64/ld-linux-x86-64.so.2 lib64/

cp /lib/x86_64-linux-gnu/libpthread.so.0 lib/
cp /lib/x86_64-linux-gnu/libc.so.6 lib/
cp /lib/x86_64-linux-gnu/libdl.so.2 lib/
cp /lib/x86_64-linux-gnu/librt.so.1 lib/
cp /lib/x86_64-linux-gnu/libm.so.6 lib/
cp /lib/x86_64-linux-gnu/libtinfo.so.5 lib/
cp /lib/x86_64-linux-gnu/libutil.so.1 lib/
cp /usr/lib/x86_64-linux-gnu/libffi.so.6 lib/
cp /usr/lib/x86_64-linux-gnu/libgmp.so.10 lib/
cp /usr/lib/libgmp.so.3 lib/

Я знаю, что сама тюрьма прекрасно работает, потому что я успешно использовала ее для дюжины других языков программирования, но Хаскелл доставляет мне головную боль, потому что я абсолютно ничего не понимаю о том, что может пойти не так. К сожалению, я не эксперт по Haskell, но мне просто нужно его скомпилировать и запустить в тюрьме. Я что-то упустил, что действительно нужно для запуска исполняемого файла Haskell?

Итак, мой вопрос: что я пропускаю / делаю неправильно?

1 ответ

Вне тюрьмы беги

strace -e открыть вашу программу

Это напечатает имена всех файлов, которые открывает ваша программа.

Другие вопросы по тегам