c++ - 哪个链接器设置决定共享库的加载路径?

标签 c++ macos linker shared-libraries poco

我已经在 Mac 上构建了 Poco C++ 库。在检查构建的输出文件时,我注意到它们的加载路径是指向构建目录的绝对路径。例如:

$ otool -L libPocoFoundation.dylib
libPocoFoundation.dylib:
    /Users/francis/orig/poco-1.3.6p2/lib/Darwin/i386/libPocoFoundation.9.dylib (compatibility version 0.0.0, current version 0.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
    /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
    /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 625.0.0)

哪个编译器或链接器选项决定了这一点?我怎样才能覆盖这个? (在编译时。我知道之后我可以使用 install_name_tool 更改它。)

编辑
编译器是g++-4.0 (gcc version 4.0.1 Apple)。
链接器是libtool (Apple Computer, Inc. version cctools-782)

我目前正在细读 makefile。也许我会自己弄清楚。但欢迎所有帮助!

最佳答案

stackoverflow.com 上的相关问题 "How to set the runtime path (-rpath) of an executable with gcc under Mac OSX?"解释了一些在编译时执行此操作的方法。

顺便说一句:我已经在 MacOS Leopard 上重现了您的 POCO 错误并打开了 bug 3164792对于 POCO-1.​​4.0

关于c++ - 哪个链接器设置决定共享库的加载路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4007959/

相关文章:

c++ - 在 VC++ 中构建时重命名 dll 文件

android - 为 Qt for Android 目标构建 SMTP 客户端

node.js - 通过重启系统终端无法识别npm和node命令

macos - Ubuntu/OSX 上 PhantomJS 的字体渲染差异

ruby - 无法在 Ruby 1.9.3 IRB 中输入变音符号

c++ - 使用静态版本的 boost::filesystem 时出现有趣的 LNK1104 错误

c++ - 两个 .c 文件具有相同的编译设置 - VC++ 报告没有错误并且不编译其中一个

c++ - 为什么函数声明中允许使用 const?

c++ - 使用getline后如何使cin工作?

C++ json-nlohmann 访问列表元素