我遇到这些错误:
ld: warning: directory not found for option '-L"/pathToMyApp/MyApp/Shared/Libraries/ADMS_AppLibrary"'
ld: warning: directory not found for option '-L"/pathToMyApp/MyApp/Shared/Libraries/TestFlightSDK1.1"'
ld: warning: directory not found for option '-L"/pathToMyApp/MyApp/Shared/Libraries/Medialets"'
ld: library not found for -lTestFlight
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这些目录实际上确实存在于以上路径。
事实是,该应用过去可以正常编译。我所做的就是向项目添加Medialets库的新版本,现在我得到了这些错误信息。
人们似乎很困惑的两个错误
如果它是“找不到选项'-L / ...的目录”错误,这意味着它是库错误,应该尝试:
点击您的项目(目标)点击构建设置在“库搜索路径”下,删除路径如果它是“找不到选项'-F / ...的目录”,则表示这是框架错误,您应该尝试:
点击您的项目(目标)点击构建设置在“框架搜索路径”下,删除路径
当我向项目中添加新库时,我遇到了同样的问题。
[当在项目中添加新库目录时,Xcode 5自动将路径添加到“库搜索路径”时,似乎发生链接器错误。
链接器错误在我手动编辑路径后消失了。 (我基本上没有更改路径,只是尝试了一些不同的格式,例如$(PROJECT_DIR)/ path / to / library或“ $(SRCROOT)/ path / to / library”。即使将其更改回原始格式,它仍然可以工作格式。)
我认为这是Xcode的错误。我正在使用Xcode 5.1(5B130a)。
ld:警告:找不到选项'-L“的目录---- 这是库错误
选择您的项目转到构建设置选项卡,在库搜索路径下,用此字符串$(SRCROOT)
替换路径对于“ -L”问题,
如果使用cmake(在我的情况下为3.3.2)并使用xcode生成器,它将为您指定的每个链接目录生成多个条目,
link_directories ("${PROJECT_SOURCE_DIR}/SDKs/thelib/lib")
请参见cmake源代码cmGlobalXCodeGenerator :: AddDependAndLinkInformation(...),其中执行此操作:
{ ...
if(this->XcodeVersion > 15)
{
// Now add the same one but append
// $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) to it:
linkDirs += " ";
linkDirs += this->XCodeEscapePath((*libDir + "/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)").c_str());
}
linkDirs += " ";
linkDirs += this->XCodeEscapePath(libDir->c_str());
}
这将导致XCode在Lib搜索路径中具有这些条目
/Users/myuser/thelib/lib/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
/Users/myuser/thelib/lib
因此,要摆脱此警告会更加困难;根据您的文件结构,其中一种可能是错误的-即使您手动删除它,它们也会在下次重新生成项目时返回。
一种解决方法是仅为其抱怨的目录创建空目录...
还可以使用“ -Wl”向链接器“传递一些参数”,但是到目前为止,我还没有找到传递该特定警告的方法。
仅仅从“ Build Phases”的“ Link with Binary with Libraries”部分中删除lib似乎至少不能解决Xcode 6中的问题。
1)转到项目导航器并找到“ Frameworks”文件夹
2)您的库可能已经存在,因此只需右键单击并“删除”
3)选择“删除引用”
4)转到所有文件所在的仓库或项目文件夹,然后拖动放入[Frameworks]资料夹
5)清理并重建,错误应消失
我没有在“库搜索路径”下添加任何库路径,但是我可以通过删除“派生数据”,转到“首选项”->“位置”来解决此问题