我安装了XCode,但由于某种原因,/ usr / local / lib不在默认的库搜索路径中:
gcc -Xlinker -v
给了我:
@(#)PROGRAM:ld PROJECT:ld64-224.1
configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 armv6m armv7m armv7em
Library search paths:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/lib
Framework search paths:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/
这很不幸,因为/usr/local/lib
是已安装库的相当规范的位置,并且/etc/ld.so.conf
上没有ldconfig
+ mac os x
来修改默认的库搜索路径。因此,如果不使用-L/usr/local/lib
,则会导致链接器错误。除了设置环境变量DYLD_LIBRARY_PATH
之外还有其他非运行时选项吗?
编辑:设置DYLD_LIBRARY_PATH
env变量对我没有任何作用。我必须设置LIBRARY_PATH
env变量,以便能够将/usr/local/lib
下安装的库与gcc
相关联。
安装XCode
时是否有选项? (这是一台工作电脑,我自己没有安装过它)
答案 0 :(得分:3)
要使用Xcode向项目添加临时库,我执行了以下操作:
要向我的XCode库搜索路径添加临时包含路径,我必须执行以下操作:
如果您想添加默认include and search paths,则需要使用:
对于包含路径:
CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
对于图书馆路径:
LIBRARY_PATH
为了使OS X中的Xcode和其他GUI应用程序(在10.10上测试)能够访问这些环境变量,您需要使用以下命令设置变量:
/bin/launchctl setenv LIBRARY_PATH /usr/local/lib
/bin/launchctl setenv CPATH /usr/local/include
但这些并非永久性的。为了在重新启动时使用这些变量,您需要创建启动脚本。 See this page for an example.
答案 1 :(得分:0)
以DYLD_开头的环境变量(例如DYLD_LIBRARY_PATH)特定于Apple的动态链接编辑器dyld。手册页指出:
DYLD_LIBRARY_PATH 这是用冒号分隔的包含库的目录列表。动态链接器 在搜索默认目录之前,先搜索这些目录。它允许 您可以测试现有库的新版本。 对于程序使用的每个库,动态链接器在以下目录中的每个目录中查找它: 依次为DYLD_LIBRARY_PATH。如果仍然找不到该库,则会搜索DYLD_FALL- 依次使用BACK_FRAMEWORK_PATH和DYLD_FALLBACK_LIBRARY_PATH。使用-L选项设置otool(1)。发现该exe-的框架和共享库 cutable与之相关。
请注意,默认情况下DYLD_FALLBACK_LIBRARY_PATH已包含对标准/ usr / local / lib的引用。
DYLD_FALLBACK_LIBRARY_PATH 这是用冒号分隔的包含库的目录列表。它用作 在安装路径中找不到的库的默认位置。默认情况下,它设置为 $(HOME)/ lib:/ usr / local / lib:/ lib:/ usr / lib。
Xcode具有项目范围或特定于目标的构建设置,例如“库搜索路径”,您可以在其中定义指向链接器知道的非标准位置的路径。
除了将* .dylib文件复制和添加到Xcode项目之外,您还需要将这些文件“安装”到这些已知库位置之一。否则,O / S加载程序(启动过程)将无法在实际启动或运行应用映像时使用它们。
请注意,C ++和Object-C在动态库方面都面临挑战。