2012-06-07 30 views
4

我得到一个库未找到错误建筑GraphViz的当前版本(2012年6月7日)与XCode的4.3使用脚本。我可能犯了错误,从XCode4.3的新位置和Application文件夹中的开发人员工具的其他人的成功配方更新构建脚本。命令行的库构建失败,连接错误

ld: library not found for -lcrt1.10.6.o

(从内存中这样做,以便在CRT LIB确切数目可能是错误的)

我也是一点也失去了我如何将纳入中日 IDE Xcode的构建本。我是一位非常有经验的程序员,但有时候无法找到XCode 4的方式。 (几十年的Visual Studio等)。

我从this earlier question复制的指令和适应

#!/bin/sh 
# For iPhoneOS, see http://clang.llvm.org/ for options 
export DEV_iOS=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer 
# was /Developer/Platforms/iPhoneOS.platform/Developer 
export SDK_iOS=${DEV_iOS}/SDKs/iPhoneOS5.1.sdk 
export COMPILER_iOS=${DEV_iOS}/usr/bin 
export CC=${COMPILER_iOS}/clang 
export CXX=${COMPILER_iOS}/clang++ 
export LDFLAGS="-arch armv7 -pipe -Os -gdwarf-2 -mthumb -isysroot ${SDK_iOS}" 
export CFLAGS="${LDFLAGS}" 
export OBJCFLAGS="${LDFLAGS}" 
export CXXFLAGS="${LDFLAGS} -fvisibility-inlines-hidden" 
export LD=${COMPILER_iOS}/ld 
export CPP=${COMPILER_iOS}/clang 
export AR=${COMPILER_iOS}/ar 
export AS=${COMPILER_iOS}/as 
export NM=${COMPILER_iOS}/nm 
export CXXCPP="${COMPILER_iOS}/clang++" 
export OBJC=${COMPILER_iOS}/clang 
export RANLIB=${COMPILER_iOS}/ranlib 

./configure \ 
--build=arm-apple-darwin11 \ 
--host=arm-apple-darwin11 \ 
--disable-dependency-tracking \ 
--enable-shared=no \ 
--enable-static=yes \ 
--enable-ltdl=no \ 
--enable-swig=no \ 
--enable-tcl=no \ 
--srcdir=${GVROOT} \ 
--with-codegens=no \ 
--with-cgraph=no \ 
--with-graph=yes \ 
--with-expat=no \ 
--with-fontconfig=no \ 
--with-freetype2=no \ 
--with-ipsepcola=yes \ 
--with-libgd=no \ 
--with-quartz=yes \ 
--with-visio=yes \ 
--with-x=no 
+0

我花了几个月了许多年之后VS.得到憋足上的Xcode完全不同的范式加上它不像抛光一样(更多的崩溃和各种你不能做的事情,比如符号查找)。 – mydogisbox

回答

0

如果我没记错的话这是固定的没有发现问题库。

CFLAGS="$(OTHER_CFLAGS) -miphoneos-version-min=5.0" 
LDFLAGS="$(OTHER_LDFLAGS) --miphoneos-version-min=5.0" 

要连结这Xcode中,生成设置下,你需要的路径添加到库和头的内置版本,然后头文件和库搜索路径。

您可以将构建脚本添加为Xcode项目的一部分,但是我还没有成功完成这项工作,此外,您应该只需要在每个版本中构建一次,以便将时间放到构建脚本以外的任何位置没有太多的回报。

如果您决定将脚本放到您的项目中(祝您好运!),然后转到构建阶段选项卡,添加“运行脚本”类型的构建阶段并将脚本粘贴到那里。

+0

要清楚,我没有使用Xcode来构建库,我使用脚本构建它,然后将其链接到我的项目。 – mydogisbox

+0

谢谢,今晚会试一试(我现在正在等待VS版本的工作) –

1

编译器通常使用crt1.o结合crt [i/n] .o和crt [begin/end] .o来支持构造函数和析构函数(在main和exit之前和之后调用的函数)。

此错误可能是由于缺少特定部署目标的缺少库文件引起的。

首先,做一些调查,如:

  1. 列表中的所有部署目标:

    ls -la /Developer/SDKs

  2. ,并找到其中CRT1图书馆你们有哪些环境

    find /Developer/SDKs -name crt1\*

你可以看到类似这样的:

/Developer/SDKs/MacOSX10.5.sdk/usr/lib/crt1.10.5.o 
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/crt1.o 
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.10.5.o 
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.10.6.o 
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.o 

因此,大家可以看到,crt1.10.6.o缺少MacOSX10.5。

解决方案1:

您可以通过创建链接到丢失的文件解决指着其他的环境,或者你可以改变你的部署目标。 例如

ln -s /Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.10.6.o /Developer/SDKs/MacOSX10.5.sdk/usr/lib/ 

而且这可能会引起的,你必须在系统中安装不同的gcc。请参阅:

which gcc;

xcrun -find gcc;

brew list | grep gcc; brew list gcc47

解决方案2

因此,当你用make编译,你其实可以指定由CC变量正确的编译器。例如。

CC=/path/to/gcc-3.4 make 

解决方案3

什么,你也可以尝试被指定为GCC正确的目标部署环境变量,通过执行以下行:

export MACOSX_DEPLOYMENT_TARGET=10.5 
export C_INCLUDE_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/include 
export LIBRARY_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/lib 

如果这个作品,那么你可以在你的shell配置文件(〜/ .profile)中添加上面的行来使更改永久。


如何测试

创建示例conftest.c文件用下面的代码:

#ifdef __GNUC__ 
    yes; 
#endif 

并尝试通过编译它:

gcc conftest.c 
cc conftest.c 
cc conftest.cc conftest.c 

疑难解答

要查看到底是什么文件丢失,尝试用dtruss,调试如:

sudo dtruss -f gcc conftest.c 2>/dev/stdout | grep crt 

你应该看到:

12426/0xb4e3b: stat64("/Developer/usr/lib/gcc/i686-apple-darwin10/4.2.1/crt1.10.6.o\0", 0x7FFF5FBFE780, 0xB)  = -1 Err#2 

所以一旦你找到丢失的文件,那么你可以按照第一个解决方案,通过链接缺少的文件从现有的位置(例如locate crt1.10.6.o)。如果您将有其他缺失的符号,请尝试其他文件(以前通过以下方式检查体系结构:file `locate crt1.10.6.o`)。

E.g.

sudo ln -s /Applications/Xcode.app/Contents/Developer//Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib/crt1.10.6.o /Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/crt1.10.6.o 
sudo ln -s /Applications/Xcode.app/Contents/Developer//Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib/crt1.10.6.o /Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/x86_64/crt1.10.6.o 

相关

Error in xcode project: ld: library not found for -lcrt1.10.6.o

相关问题