Mac OS X 上链接库的默认搜索目录是什么

发布于 2024-12-02 13:50:50 字数 632 浏览 2 评论 0原文

我在 Mac OS X 上使用 CMake 构建了 Google Test 并获得了两个共享库:< em>libgtest.dylib 和 libgtest_main.dylib。现在我需要安装它们。我知道Linux上有一些默认的搜索目录,例如/usr/lib/usr/local/lib等。但我不熟悉Mac OS X并且不知道将这些库放在哪里。

Mac OS X 目录结构中,我发现有三个库目录:~/Library/Library/usr/lib。我尝试将 gtest 库分别放入这些目录中,发现只有 /usr/lib 有效。

我想知道的是,Mac OS X 上的默认搜索目录是否有一些规则,就像 Linux 和 Windows 上一样。

I've build the Google Test with CMake on Mac OS X and get two shared libraries: libgtest.dylib and libgtest_main.dylib. And now I need install both them. I know there are some default search directories on Linux, such as /usr/lib, /usr/local/lib, etc.. But I am unfamiliar with Mac OS X and don't know where to place those libraries.

In Mac OS X Directory Structure, I find there are three directories of libraries: ~/Library, /Library and /usr/lib. And I've tried to place gtest libraries into these directories respectively and found out only /usr/lib works.

What I want to know is wether there are some rules about the default search directories on Mac OS X just like on Linux and Windows.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

往日 2024-12-09 13:50:50

查看 dyld 链接器:

DYLD_FALLBACK_LIBRARY_PATH
   ...
默认情况下,它设置为
$(HOME)/lib:/usr/local/lib:/lib:/usr/lib

这篇关于“在 Mac OS X 上部署应用程序”的文章和 其他有关“Mac OS X 安装程序”的文章也可能有所帮助。

Take a look at the default values for environment variables used by the dyld linker:

DYLD_FALLBACK_LIBRARY_PATH
   ...
By default, it is set to
$(HOME)/lib:/usr/local/lib:/lib:/usr/lib

This article about "Deploying an Application on Mac OS X" and other article about "Mac OS X installers" may also help.

停顿的约定 2024-12-09 13:50:50

除了@linuxbuild的答案之外,我还找到了文章 "动态库Apple 开发者档案中的“编程主题 > 库搜索过程” 很有帮助。它解释了 libname.dylibpath/to/libname.dylib 的搜索顺序不同。

当库名称是文件名(而不是带有目录名的路径)时,动态加载器按以下顺序搜索库:

  1. $LD_LIBRARY_PATH
  2. $DYLD_LIBRARY_PATH
  3. 进程的工作目录
  4. $DYLD_FALLBACK_LIBRARY_PATH

当库名称至少包含一个目录名(相对路径名或完全限定路径名)时,动态加载器将按以下顺序搜索库:

  1. $DYLD_LIBRARY_PATH 使用文件名
  2. 给定的路径名​​
  3. $DYLD_FALLBACK_LIBRARY_PATH 使用文件名

In addition to @linuxbuild's answer, I've found the article "Dynamic Library Programming Topics > The Library Search Process" from Apple's Developer archive helpful. It explains that the search order differs for libname.dylib and path/to/libname.dylib.

When the library name is a filename (not a path with directory names), the dynamic loader searches for the library in the following order:

  1. $LD_LIBRARY_PATH
  2. $DYLD_LIBRARY_PATH
  3. The process’s working directory
  4. $DYLD_FALLBACK_LIBRARY_PATH

When the library name contains at least one directory name (a relative or fully qualified pathname), the dynamic loader searches for the library in the following order:

  1. $DYLD_LIBRARY_PATH using the filename
  2. The given pathname
  3. $DYLD_FALLBACK_LIBRARY_PATH using the filename
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文