Как исправить libluajit в архитектуре x86_64?

Я пытаюсь скомпилировать свой проект, но вижу эту проблему

Проблема: [Неопределенные символы для архитектуры x86_64]

Изображение: http://i.imgur.com/iDOlwMX.png

Я использовал: + Cocos2d-2.1rc0-x-2.1.2 + xCode 6.1 + libluajit новейший

Настройка сборки:

  • Допустимая архитектура: arm64, armv7, armv7s

--> я не знаю, как это исправить, вы можете помочь мне решить эту проблему?

Большое спасибо!


person ducnguyen    schedule 12.01.2015    source источник
comment
запустите файл libluajit.a, чтобы увидеть, содержит ли библиотека требуемый фрагмент x86_64. Если нет - нужно скомпилировать для всех нужных арок   -  person Andrei Shender    schedule 12.01.2015
comment
Привет @AndreiShender, Вы видите i.imgur.com/iDOlwMX.png? Я использовал Xcode для создания файла .ipa, но не могу добавить архитектуры arm64.   -  person ducnguyen    schedule 14.01.2015


Ответы (1)


я столкнулся с той же проблемой, что и вы, решение, как показано ниже:

<сильный>1. скачать luajit v2.1

<сильный>2. отредактируйте build_ios.sh следующим образом:

#!/bin/sh
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
LIPO="xcrun -sdk iphoneos lipo"
STRIP="xcrun -sdk iphoneos strip"

SRCDIR=$DIR/src
DESTDIR=$DIR/prebuilt/ios
IXCODE=`xcode-select -print-path`
ISDK=$IXCODE/Platforms/iPhoneOS.platform/Developer
INFOPLIST_PATH=$IXCODE/Platforms/iPhoneOS.platform/version.plist
BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "${INFOPLIST_PATH}")
ISDKVER=iPhoneOS${BUNDLE_ID}.sdk

if [ "${ISDKVER}" = "iPhoneOS8.0.sdk" ] || [ "${ISDKVER}" = "iPhoneOS8.1.sdk" ]; then
ISDKP=$IXCODE/usr/bin/
else
ISDKP=$ISDK/usr/bin/
fi

if [ ! -e $ISDKP/ar ]; then 
  sudo cp $ISDK/usr/bin/ar $ISDKP
fi

if [ ! -e $ISDKP/ranlib ]; then
  sudo cp $ISDK/usr/bin/ranlib $ISDKP
fi

if [ ! -e $ISDKP/strip ]; then
  sudo cp $ISDK/usr/bin/strip $ISDKP
fi

rm "$DESTDIR"/*.a
cd $SRCDIR


make clean
ISDKF="-arch armv7 -isysroot $ISDK/SDKs/$ISDKVER"
if [ ${ISDKVER} = "iPhoneOS8.0.sdk" ] || [ ${ISDKVER} = "iPhoneOS8.1.sdk" ]; then
make HOST_CC="gcc -m32 -arch i386" TARGET_FLAGS="$ISDKF" TARGET=arm TARGET_SYS=iOS
else
make HOST_CC="gcc -m32 -arch i386" CROSS=$ISDKP TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
fi
mv "$SRCDIR"/src/libluajit.a "$DESTDIR"/libluajit-armv7.a

make clean
ISDKF="-arch armv7s -isysroot $ISDK/SDKs/$ISDKVER"
if [ ${ISDKVER} = "iPhoneOS8.0.sdk" ] || [ ${ISDKVER} = "iPhoneOS8.1.sdk" ]; then
make HOST_CC="gcc -m32 -arch i386" TARGET_FLAGS="$ISDKF" TARGET=arm TARGET_SYS=iOS
else
make HOST_CC="gcc -m32 -arch i386" CROSS=$ISDKP TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
fi
mv "$SRCDIR"/src/libluajit.a "$DESTDIR"/libluajit-armv7s.a

make clean
make CC="gcc -m32 -arch i386" clean all
mv "$SRCDIR"/src/libluajit.a "$DESTDIR"/libluajit-i386.a

make clean
ISDKF="-arch arm64 -isysroot $ISDK/SDKs/$ISDKVER"
make HOST_CC="gcc " CROSS="$ISDKP" TARGET_FLAGS="$ISDKF" TARGET=arm64 TARGET_SYS=iOS
mv "$SRCDIR"/src/libluajit.a "$DESTDIR"/libluajit-arm64.a

make clean
make CC="gcc -m64 -arch x86_64" clean all
mv "$SRCDIR"/src/libluajit.a "$DESTDIR"/libluajit-x86_64.a

$LIPO -create "$DESTDIR"/libluajit-*.a -output "$DESTDIR"/libluajit.a
$STRIP -S "$DESTDIR"/libluajit.a
$LIPO -info "$DESTDIR"/libluajit.a

rm "$DESTDIR"/libluajit-*.a

make clean

<сильный>3. запустите этот скрипт, чтобы создать новый luajit.a

<сильный>4. Проект Xcode добавляет новые параметры '-pagezero_size 10000 -image_base 100000000' в 'другие флаги компоновщика'

person La Reine J.    schedule 15.01.2015
comment
Спасибо, @La Reine J, я постараюсь рассказать вам о результате! - person ducnguyen; 15.01.2015
comment
Я пытался, но потерпел неудачу, можете ли вы дать мне шаг за шагом, надеюсь, вы можете мне помочь - person ducnguyen; 15.01.2015
comment
Можете ли вы дать мне файл libluajit.a после успешного создания? - person ducnguyen; 15.01.2015
comment
Я могу дать его вам.. Но я не уверен, что это может работать хорошо. Потому что я раньше скачал .a который зависит от 2dx.3.x, но он не работал. Поэтому я должен создать новый, зависит от моей версии 2dx. Если вы хотите попробовать, пожалуйста, дайте мне свой адрес электронной почты... Я отправлю его вам - person La Reine J.; 22.01.2015
comment
Пожалуйста, пришлите на мою электронную почту: [email protected], большое спасибо, ›:D‹ И если вы можете дать мне видео о том, как собрать эту библиотеку, я дам вам особую благодарность - person ducnguyen; 22.01.2015
comment
Отправить его вам .. Пожалуйста, проверьте свой почтовый ящик .. Спасибо. - person La Reine J.; 26.01.2015
comment
@LaReineJ. вы должны иметь в виду luajit 2.0.1, потому что на данный момент luajit всего 2.0.4. Также я не могу заставить его работать по вашим инструкциям. особенно шаг №4 - person deathemperor; 13.06.2015
comment
Я смог загрузить luajit 2.1 alpha, но все равно получил те же ошибки. - person deathemperor; 15.06.2015
comment
ОБНОВЛЕНИЕ: я смог заставить его работать после очистки Xcode и снова собрать все. Спасибо за инструкции. - person deathemperor; 15.06.2015