由于Killed: 9
错误,配置脚本的摘录形式失败,即iOS 5只能运行已签名应用。所以我需要找到一种方法将ldid -s
放在这些测试中的某些位置,只有问题在哪里。
任何???
失败
checking build system compiler gcc... no
checking build system compiler gcc -g -O2 ... no
checking build system compiler cc... no
checking build system compiler gcc... no
checking build system compiler c89... no
checking build system compiler c99... no
configure: error: Cannot find a build system compiler
和config.log
onfigure:15586: gcc -c -g -O2 conftest.c >&5
configure:15586: $? = 0
configure:15586: result: yes
configure:15586: checking sys/time.h presence
configure:15586: gcc -E conftest.c
configure:15586: $? = 0
configure:15586: result: yes
configure:15586: checking for sys/time.h
configure:15586: result: yes
configure:15677: checking build system compiler gcc
configure:15690: gcc conftest.c
conftest.c: In function 'main':
conftest.c:4: warning: incompatible implicit declaration of built-in function 'exit'
configure:15693: $? = 0
./configure: line 15675: 27218 Killed: 9 ./a.out
./configure: line 15695: ./b.out: No such file or directory
./configure: line 15695: ./a.exe: No such file or directory
./configure: line 15695: ./a_out.exe: No such file or directory
./configure: line 15695: ./conftest: No such file or directory
configure:15700: result: no
configure:15677: checking build system compiler gcc -g -O2
configure:15690: gcc -g -O2 conftest.c
conftest.c: In function 'main':
conftest.c:4: warning: incompatible implicit declaration of built-in function 'exit'
configure:15693: $? = 0
./configure: line 15675: 27234 Killed: 9 ./a.out
./configure: line 15695: ./b.out: No such file or directory
./configure: line 15695: ./a.exe: No such file or directory
./configure: line 15695: ./a_out.exe: No such file or directory
./configure: line 15695: ./conftest: No such file or directory
configure:15700: result: no
最后是./configure脚本..
if test -n "$CC_FOR_BUILD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system compiler $CC_FOR_BUILD" >&5
$as_echo_n "checking build system compiler $CC_FOR_BUILD... " >&6; }
# remove anything that might look like compiler output to our "||" expression
rm -f conftest* a.out b.out a.exe a_out.exe
cat >conftest.c <<EOF
int
main ()
{
exit(0);
}
EOF
gmp_compile="$CC_FOR_BUILD conftest.c"
cc_for_build_works=no
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gmp_compile\""; } >&5
(eval $gmp_compile) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
if (./a.out || ./b.out || ./a.exe || ./a_out.exe || ./conftest) >&5 2>&1; then
cc_for_build_works=yes
fi
fi
rm -f conftest* a.out b.out a.exe a_out.exe
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cc_for_build_works" >&5
$as_echo "$cc_for_build_works" >&6; }
if test "$cc_for_build_works" = yes; then
:
else
as_fn_error $? "Specified CC_FOR_BUILD doesn't seem to work" "$LINENO" 5
fi
elif test -n "$HOST_CC"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system compiler $HOST_CC" >&5
$as_echo_n "checking build system compiler $HOST_CC... " >&6; }
# remove anything that might look like compiler output to our "||" expression
rm -f conftest* a.out b.out a.exe a_out.exe
cat >conftest.c <<EOF
int
main ()
{
exit(0);
}
答案 0 :(得分:1)
我不得不承认,除了最简单的shell脚本之外,我的阅读能力都很差,但基本上,你需要在运行它之前伪造可执行文件。您想要运行的可执行文件看起来像conftest
,对吧?所以,试着在这个块中签名:
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gmp_compile\""; } >&5
(eval $gmp_compile) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
#begin added code
ldid -S ./conftest
#end added code
if (./a.out || ./b.out || ./a.exe || ./a_out.exe || ./conftest) >&5 2>&1; then
cc_for_build_works=yes
fi
fi
显然,如果现有ldid
中找不到/usr/bin/ldid
,则可能需要提供PATH
的完整路径(例如a.out
)。
更新:下面每张海报的评论,conftest
实际上是需要签名的可执行文件,而不是{{1}}。