Как передать собственный скрипт в ./configure для запуска после компиляции? - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь собрать проект Tor на своем взломанном iOS устройстве. Я клонировал репозиторий Git и запустил автоген. sh. Затем я запустил ./configure, и компилятор C не был найден. Поэтому я запустил это вместо этого (после установки Clang, Theos Dependencies, et c. Из репозиториев):

./configure CC="clang --isysroot /var/mobile/theos/sdks/iPhoneOS11.2.sdk"

Теперь он говорит, что не может запустить скомпилированную программу C:

PoisonImy:~/tor mobile$ ./configure CC="clang -isysroot /var/mobile/theos/sdks/iPhoneOS11.2.sdk"
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... no
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether make supports the include directive... yes (GNU style)
checking for gcc... clang -isysroot /var/mobile/theos/sdks/iPhoneOS11.2.sdk
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... configure: error: in `/var/mobile/tor':               
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

Это из-за ошибки «Killed: 9», которую я получил ранее, когда я скомпилировал программу hello world с использованием Clang и попытался ее запустить. Я исправил это, используя 'ldid -SEntitlements.plist a.out', с файлом Entitlements.plist в здесь .

Есть ли способ проинструктировать скрипт настройки (или лязг) сделать то же самое?

РЕДАКТИРОВАТЬ: Может быть, сделать сценарий оболочки, который запускает clang и ldid, а затем передать его в сценарий конфигурации? Я попробую это. Я новичок в написании сценариев оболочки, поэтому понятия не имею, как решить эту проблему.

1 Ответ

0 голосов
/ 29 февраля 2020

Готово. Вот скрипт, который я использовал:

#!/bin/bash

ALL="$*"

while [[ $# -gt 0 ]]
do
key="$1"

case $key in
    -o)
    OUTPUT="$2"
    shift
    shift
    ;;
    *)
    shift
    ;;
esac
done

clang -isysroot /var/mobile/theos/sdks/iPhoneOS11.2.sdk ${ALL}
ldid -S/var/mobile/Entitlements.plist ${OUTPUT}

Я сохранил его как 'compiler. sh', сделал его исполняемым и поместил в мой PATH. И затем я использовал это для моего компилятора в скрипте конфигурации. Возможно, вам придется настроить каталог SDK и каталог Entitlements.plist самостоятельно.

...