Что необходимо для запуска программы на 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 открыть вашу программу
Это напечатает имена всех файлов, которые открывает ваша программа.