【问题标题】:gcc on Mac OS X: how to link libraries installed with MacPorts?Mac OS X 上的 gcc:如何链接使用 MacPorts 安装的库?
【发布时间】:2011-10-07 22:34:32
【问题描述】:

我已经使用 macports 安装了 gcc 4.6。前缀是/opt/local,我得到了预期的包含路径:

#include "..." search starts here:
#include <...> search starts here:  
/opt/local/include/gcc46/c++/  
/opt/local/include/gcc46/c++//x86_64-apple-darwin10  
/opt/local/include/gcc46/c++//backward  
/opt/local/lib/gcc46/gcc/x86_64-apple-darwin10/4.6.1/include  
/opt/local/include  
/opt/local/lib/gcc46/gcc/x86_64-apple-darwin10/4.6.1/include-fixed  
/usr/include  
/System/Library/Frameworks  
/Library/Frameworks End of search list.

但是,/opt/local/lib 似乎不在库搜索路径中,所以我在命令行上使用 g++ 时必须使用 -L/opt/local/lib 指定它:

Library search paths:
    /opt/local/lib/gcc46/gcc/x86_64-apple-darwin10/4.6.1
    /opt/local/lib/gcc46
    /usr/lib
    /usr/local/lib
Framework search paths:
    /Library/Frameworks/
    /System/Library/Frameworks/

这对于使用 macports 安装的其他库来说是一个问题。有没有一种简单的方法可以将/opt/local/lib 添加到库搜索路径中?我尝试设置DYLD_LIBRARY_PATH 无济于事。我使用的是 Mac OS X 10.6.8。

【问题讨论】:

  • DYLD_LIBRARY_PATH 用于运行时动态加载,而不是编译时。

标签: macos gcc linker g++ macports


【解决方案1】:

在您的 ~/.profile 添加以下行:

export LDFLAGS="-L/opt/local/lib"

并在终端中运行 source ~/.profile 以重新加载您的个人资料。

这样,-L 开关就会从 gcc/g++ 中检测到并自动使用。

【讨论】:

  • 你建设得怎么样了?如果我只是使用命令行g++,这个环境变量是没有作用的。
  • 应使用 LIBRARY_PATH 变量,不带“-L”
【解决方案2】:

这取决于您是否要将可执行的动态或静态链接到库。在 OS X 下,您可以像这样将库添加为源/目标文件:

 Dynamic: g++ -Wall -o myexecutable myfile.cpp /path/to/library.dylib
 Static: g++ -Wall -o myexecutable myfile.cpp /path/to/library.a

最好的方法是使用构建系统,例如 CMake(可以从 macports 安装)。并且可以很容易地找到库,以跨平台的方式创建库。

【讨论】:

  • 我的问题更多是关于如何在 gcc 的库搜索路径中设置/opt/local/lib。 Gcc 是在 /opt/local 中构建的,所以我希望它在搜索路径中,但它不是。
【解决方案3】:

我发现最简单的方法是设置C_INCLUDE_PATHLIBRARY_PATH

export C_INCLUDE_PATH=/opt/local/include
export CPLUS_INCLUDE_PATH=/opt/local/include
export LIBRARY_PATH=/opt/local/lib

【讨论】:

  • 谢谢!这是唯一有效的解决方案。
猜你喜欢
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 2023-03-11
相关资源
最近更新 更多