[英]For G++ on MacOS how to add default include dir /usr/local/include and default library search path /usr/local/lib?
[英]Make /usr/local/lib a default library search path for ld on mac os x?
我安装了 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
是已安装库的相当规范的位置,并且在mac os x
上没有/etc/ld.so.conf
+ ldconfig
来修改默认库搜索路径。 所以不使用-L/usr/local/lib
这会导致链接器错误。 除了设置环境变量DYLD_LIBRARY_PATH
之外,还有其他非运行时选项吗?
编辑:设置DYLD_LIBRARY_PATH
环境变量对我没有任何作用。 我必须设置LIBRARY_PATH
变量才能将/usr/local/lib
下安装的/usr/local/lib
与gcc
。
安装XCode
时是否有关于此的选项? (是工作电脑,自己没装)
要使用 Xcode 向我的项目添加临时库,我执行了以下操作:
要将临时包含路径添加到我的 XCode 库搜索路径,我必须执行以下操作:
如果要添加默认 包含和搜索路径,则需要使用:
对于包含路径:
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
但这些都不是永久性的。 为了在重新启动时使用这些变量,您需要创建一个启动脚本。 有关示例,请参阅此页面。
以 DYLD_ 开头的环境变量(如 DYLD_LIBRARY_PATH)特定于 Apple 的动态链接编辑器 dyld。 手册页指出:
DYLD_LIBRARY_PATH这是包含库的目录的冒号分隔列表。 动态链接器在搜索库的默认位置之前先搜索这些目录。 它允许您测试现有库的新版本。 对于程序使用的每个库,动态链接器依次在 DYLD_LIBRARY_PATH 中的每个目录中查找它。 如果它仍然找不到库,它会依次搜索 DYLD_FALL-BACK_FRAMEWORK_PATH 和 DYLD_FALLBACK_LIBRARY_PATH。 对 otool(1) 使用 -L 选项。 发现可执行文件所链接的框架和共享库。
请注意,默认情况下 DYLD_FALLBACK_LIBRARY_PATH 已经包含对标准 /usr/local/lib 的引用。
DYLD_FALLBACK_LIBRARY_PATH这是包含库的目录的冒号分隔列表。 它用作安装路径中未找到的库的默认位置。 默认情况下,它设置为 $(HOME)/lib:/usr/local/lib:/lib:/usr/lib。
Xcode 具有项目范围或特定于目标的构建设置,例如“库搜索路径”,您可以在其中定义需要让链接器知道的非标准位置的路径。
除了将 *.dylib 文件复制和添加到您的 Xcode 项目之外,您还需要将它们“安装”到这些已知库位置之一。 否则 O/S 加载程序(启动进程)无法在应用程序映像的实际启动或运行时使用它们。
请参阅: https : //developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/UsingDynamicLibraries.html
请注意,C++ 和 Object-C 在动态库方面存在挑战。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.