jua*_*nza 11 macos linker gcc g++ macports
我使用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.
Run Code Online (Sandbox Code Playgroud)
但是,/opt/local/lib似乎没有在库搜索路径中,所以我必须-L/opt/local/lib在命令行上使用g ++时指定它:
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/
Run Code Online (Sandbox Code Playgroud)
对于安装了macport的其他库,这是一个问题.有没有一种简单的方法可以添加/opt/local/lib到库搜索路径?我试过设置DYLD_LIBRARY_PATH无济于事.我使用的是Mac OS X 10.6.8.
在你的〜/ .profile中添加以下行:
export LDFLAGS="-L/opt/local/lib"
Run Code Online (Sandbox Code Playgroud)
并source ~/.profile在终端中运行以重新加载您的个人资料.
这样,-L开关将从gcc/g ++中检测并自动使用.
小智 4
这取决于您是否要将可执行文件动态或静态链接到库。在 OS X 下,您可以将库添加为源/目标文件,如下所示:
Dynamic: g++ -Wall -o myexecutable myfile.cpp /path/to/library.dylib
Static: g++ -Wall -o myexecutable myfile.cpp /path/to/library.a
Run Code Online (Sandbox Code Playgroud)
最好的方法是使用构建系统,例如 CMake(可以从 macports 安装)。并且使得查找库、以跨平台的方式创建库变得非常容易。
| 归档时间: |
|
| 查看次数: |
21088 次 |
| 最近记录: |