在mac os x上使/ usr/local/lib成为ld的默认库搜索路径?
我已经安装了XCode,但由于某些原因,在/ usr/local/lib目录是不是包含在默认的库搜索路径:在mac os x上使/ usr/local/lib成为ld的默认库搜索路径?
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
env变量对我没有帮助。我不得不设置LIBRARY_PATH
env变量,而是能够链接在/usr/local/lib
下安装的库与gcc
。
是否有这个安装XCode
时的选项? (这是一个工作电脑,没有安装它自己)
要使用Xcode的临时库添加到项目中,我做了以下内容:
要添加一个临时的include路径到我的XCode库搜索路径我必须做到以下几点:
如果你想添加默认你需要使用:
对于包含路径:
CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
而对于库的路径:
LIBRARY_PATH
为了Xcode和其它GUI应用程序在OS X(上10.10测试),以便能够访问这些环境变量,你需要设置变量使用:
/bin/launchctl setenv LIBRARY_PATH /usr/local/lib
/bin/launchctl setenv CPATH /usr/local/include
但这些都不是永久的。为了让这些变量重新启动,您需要创建一个启动脚本。 See this page for an example.
您的'gcc -Xlinker -v'列出了正确的库搜索路径,您是否在XCode中列出了'gcc - Xlinker -v'?或者我怀疑你的环境变量是正确设置的。对我而言,这就是所需要的。 – 2015-03-13 09:42:56
现在它是否适用于不使用XCode的项目,即它是全局设置还是仅限于项目? (你还有你的env变量LIBRARY_PATH设置?) – 2015-03-13 09:50:53
没有选项时,我安装的Xcode,我所看到的。此外,无论是'DYLD_LIBRARY_PATH'也不'LIBRARY_PATH'也不'LD_LIBRARY_PATH'所见[这里](http://stackoverflow.com/questions/17889799/libraries-in-usr-local-lib-not-found)为我工作。仍在寻找解决方案。 – 2015-03-11 04:14:35
'gcc -Xlinker -v'给你什么?我将此添加到我的'〜/ .bash_profile':'如果[-z “$ {} LIBRARY_PATH”]#\ n 然后#\ n 出口LIBRARY_PATH = “/ usr/lib中:在/ usr/local/lib目录” # \ n 别的#\ n 出口LIBRARY_PATH = “LIBRARY_PATH:/ usr/lib中:在/ usr/local/lib目录” #\ n fi'(表示换行以'#\ N')。在此之后,'GCC -Xlinker -v'还列出了'在/ usr /本地/ lib'(打开新的终端窗口'.bash_profile'生效) – 2015-03-12 05:32:01
'GCC -Xlinker -v @(#)计划:LD项目:ld64-241。9 配置为支持archs:用于ARMv6 ARMv7的armv7s arm64 I386 x86_64的x86_64h armv6m armv7m armv7em 库搜索路径: \t/usr/lib中 \t的/ usr /本地/ lib中 框架搜索路径: \t /库/框架/ \t /系统/资源库/框架/ 用于建筑x86_64的未定义符号: “_main”,从引用: 隐含进入/启动主可执行 LD:符号(S)没有发现建筑x86_64的 铛:错误:连接命令失败退出代码1(使用-v查看调用)' – 2015-03-12 07:54:31