命令行的库构建失败,连接错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了命令行的库构建失败,连接错误相关的知识,希望对你有一定的参考价值。
我使用的脚本获取库未找到错误建筑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
编译器通常使用crt1.o与CRT [I / N]的.o和CRT组合[开始/结束] .O支持(之前和之后主要和出口调用的函数)的构造和析构。
此错误可能由具体的部署目标这个缺少库文件造成的。
首先,做一些调查,如:
- 列出你所有的部署目标:
ls -la /Developer/SDKs
- 并找出其中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 ", 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
如果我没记错的话这是固定的没有发现问题库。
CFLAGS="$(OTHER_CFLAGS) -miphoneos-version-min=5.0"
LDFLAGS="$(OTHER_LDFLAGS) --miphoneos-version-min=5.0"
要连结这Xcode中,生成设置下,然后头文件和库搜索路径需要的路径添加到库和头的内置版本。
您可以添加构建脚本为您的Xcode项目的一部分,但我还没有与这样的成功,再加上你应该只需要每一次版本构建它,所以把时间分成比构建脚本以外的任何不具备多少回报。
如果你决定把脚本在你的项目呢(祝你好运!),然后去构建阶段选项卡,添加类型的构建阶段“运行脚本”,并粘贴您的脚本那里。
以上是关于命令行的库构建失败,连接错误的主要内容,如果未能解决你的问题,请参考以下文章
ld:找不到-lPods-App clang 的库:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
ld:找不到-lFirebaseCore clang的库:错误:链接器命令失败,退出代码为1(使用-v查看调用)