Xcode“找不到选项-L的目录”错误

问题描述 投票:10回答:6

我遇到这些错误:

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库的新版本,现在我得到了这些错误信息。

xcode compiler-errors linker-errors
6个回答
20
投票

人们似乎很困惑的两个错误

如果它是“找不到选项'-L / ...的目录”错误,这意味着它是库错误,应该尝试:

点击您的项目(目标)点击构建设置在“库搜索路径”下,删除路径如果它是“找不到选项'-F / ...的目录”,则表示这是框架错误,您应该尝试:

点击您的项目(目标)点击构建设置在“框架搜索路径”下,删除路径


8
投票

当我向项目中添加新库时,我遇到了同样的问题。

[当在项目中添加新库目录时,Xcode 5自动将路径添加到“库搜索路径”时,似乎发生链接器错误。

链接器错误在我手动编辑路径后消失了。 (我基本上没有更改路径,只是尝试了一些不同的格式,例如$(PROJECT_DIR)/ path / to / library或“ $(SRCROOT)/ path / to / library”。即使将其更改回原始格式,它仍然可以工作格式。)

我认为这是Xcode的错误。我正在使用Xcode 5.1(5B130a)。


4
投票

ld:警告:找不到选项'-L“的目录---- 这是库错误

选择您的项目转到构建设置选项卡,在库搜索路径下,用此字符串$(SRCROOT)

替换路径

4
投票

对于“ -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”向链接器“传递一些参数”,但是到目前为止,我还没有找到传递该特定警告的方法。


1
投票

仅仅从“ Build Phases”的“ Link with Binary with Libraries”部分中删除lib似乎至少不能解决Xcode 6中的问题。

1)转到项目导航器并找到“ Frameworks”文件夹

2)您的库可能已经存在,因此只需右键单击并“删除”

3)选择“删除引用”

4)转到所有文件所在的仓库或项目文件夹,然后拖动放入[Frameworks]资料夹

5)清理并重建,错误应消失


0
投票

我没有在“库搜索路径”下添加任何库路径,但是我可以通过删除“派生数据”,转到“首选项”->“位置”来解决此问题

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