2013-03-21 42 views
1

这里的错误:为什么我在为设备编译LiveCode iOS外部程序时遇到此错误,但是它为模拟器编译好了吗?

Undefined symbols for architecture armv7: 
    "___udivmodsi4", referenced from: 
     _sqlite3BitvecSet in libmergDropboxSync.a(sqlite3.o) 
     _sqlite3BitvecClear in libmergDropboxSync.a(sqlite3.o) 
     _sqlite3BitvecTest in libmergDropboxSync.a(sqlite3.o) 
ld: symbol(s) not found for architecture armv7 
collect2: ld returned 1 exit status 
lipo: can't open input file: /var/folders/np/1scdfrdd7kx64bbykn22wj200000gn/T//ccvBM79H.out (No such file or directory) 
error: linking step of external dylib build failed, probably due to missing framework or library references - check the contents of the mergDropboxSync.ios file 
Command /bin/sh emitted errors but did not return a nonzero exit code to indicate failure 

当我建立模拟器它建立的罚款。我的图书馆正在编译。这只是在对于在lclink.sh仅依赖项检查记录的dylib链接舞台设备构建的是有一个问题:

# Build the 'dylib' form of the external - this is used by simulator builds, and as 
# a dependency check for device builds. 
"$PLATFORM_DEVELOPER_BIN_DIR/g++" -dynamiclib $ARCHS -isysroot "$SDKROOT" -o "$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.dylib" "$BUILT_PRODUCTS_DIR/$EXECUTABLE_NAME" $SYMBOL_ARGS $SYMBOLS $DEPS 
if [ $? != 0 ]; then 
    echo "error: linking step of external dylib build failed, probably due to missing framework or library references - check the contents of the $PRODUCT_NAME.ios file" 
    exit $? 
fi 

我试着用跳过此步骤如下:

if [ "$EFFECTIVE_PLATFORM_NAME" == "-iphonesimulator" ]; then 
    # Build the 'dylib' form of the external - this is used by simulator builds, and as 
    # a dependency check for device builds. 
    "$PLATFORM_DEVELOPER_BIN_DIR/g++" -dynamiclib $ARCHS -isysroot "$SDKROOT" -o "$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.dylib" "$BUILT_PRODUCTS_DIR/$EXECUTABLE_NAME" $SYMBOL_ARGS $SYMBOLS $DEPS 
    if [ $? != 0 ]; then 
     echo "error: linking step of external dylib build failed, probably due to missing framework or library references - check the contents of the $PRODUCT_NAME.ios file" 
     exit $? 
    fi 
fi 

这允许脚本继续并在设备构建中为静态链接构建目标文件。他们构建的很好,但是当我去建立独立的依赖关系检查阻止它。有没有可以推荐的解决方法?

请注意,我使用稍微修改的lclink.sh,它会根据您正在构建的SDK添加弱链接支持和可选的框架包含。它可以在这里找到是否有帮助: http://repo.goulding.ws/livecodeiossdk/src/b570507fe48274cc4c0f90102809194eafe5225d/lclink.sh?at=master


编辑

由于错误显然是ARMv7的有关我试图对armv7s构建和它建立的罚款。我得出的结论是,新的Dropbox同步SDK可能只有一些armv7s代码。它似乎是基于错误的sqlite相关。不知道还有什么尝试在这个阶段...


编辑

这似乎是造成Dropbox的同步API工具链问题正在与苹果LLVM和LiveCode的外部和设备编译构建正在与Apple GCC一起编译。

+0

我不熟悉LiveCode,但错误可能是在任何工具链被用来建立'libmergDropboxSync.a'。另见[这个问题](http://stackoverflow.com/questions/12663424/what-error-is-udivmodsi4)。 – 2013-03-21 03:38:04

+0

谢谢我看到了这个问题,似乎没有任何回答让我担心。我试着将libmergDropboxSync.a的编译器设置为Xcode中的Apple LLVM和LLVM GCC。没有任何区别......似乎也没有帮助OP在这个问题上。 – 2013-03-21 04:56:51

+0

也许一个干净的版本使用不同版本的Xcode? – 2013-03-22 00:46:17

回答

相关问题