命令行的库构建失败,连接错误

问题描述 投票:5回答:2

我使用的脚本获取库未找到错误建筑GraphViz的当前版本(2012年6月7日)和Xcode 4.3。我可能犯了错误更新修建从别人的成功食谱脚本Xcode4.3的新位置,并在应用程序文件夹的开发工具。

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
ios5 xcode4.3 graphviz
2个回答
1
投票

编译器通常使用crt1.o与CRT [I / N]的.o和CRT组合[开始/结束] .O支持(之前和之后主要和出口调用的函数)的构造和析构。

此错误可能由具体的部署目标这个缺少库文件造成的。

首先,做一些调查,如:

  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

如果一切正常,那么你可以添加上述行到壳轮廓(〜/ .profile文件),以使更改永久。


如何测试

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

#ifdef __GNUC__
  yes;
#endif

并尝试通过编译它:

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

故障排除

要查看该文件丢失什么,尝试使用dtruss,e.g调试:

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`)。

EG

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


0
投票

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

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

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

您可以添加构建脚本为您的Xcode项目的一部分,但我还没有与这样的成功,再加上你应该只需要每一次版本构建它,所以把时间分成比构建脚本以外的任何不具备多少回报。

如果你决定把脚本在你的项目呢(祝你好运!),然后去构建阶段选项卡,添加类型的构建阶段“运行脚本”,并粘贴您的脚本那里。

© www.soinside.com 2019 - 2024. All rights reserved.