为什么 lsof 不显示 libstdc++已加载到 Mac OS X 上?

发布于 2024-10-01 18:37:41 字数 407 浏览 10 评论 0原文

我有一个我知道使用 libstdc++ 的应用程序,但即使作为超级用户,我在 Mac OS X 10.6 Snow Leopard 系统上也看不到 /usr/lib/libstdc++.6.0.9.dylib?

lsof | grep libstdc++

如果我使用 DYLD_LIBRARY_PATH 来使用我自己的 libstdc++ 副本,它会在我的应用程序运行时显示在完整路径中:

fooo 1701 foooo  txt      REG               14,5     2439888   54431 /path/to/shared/libstdc++.6.0.9.dylib

这是在毫无结果的谷歌搜索之后。在 Linux 系统上,任何用户都可以看到哪些应用程序正在使用 /usr/lib 中的库。

I have an application that I know uses libstdc++, but even as the super user, I cannot see /usr/lib/libstdc++.6.0.9.dylib on my Mac OS X 10.6 Snow Leopard system?

lsof | grep libstdc++

If I use DYLD_LIBRARY_PATH to use my own copy of libstdc++ it shows up in the full path while my app is running:

fooo 1701 foooo  txt      REG               14,5     2439888   54431 /path/to/shared/libstdc++.6.0.9.dylib

This is after a fruitless google search. On a linux system, any user can see which applications are using the library in /usr/lib.

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

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

发布评论

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

评论(1

瀞厅☆埖开 2024-10-08 18:37:41

我猜原因是 libstdc++ 在 OS X 中被视为系统库,并且与其他用户库的处理方式不同。

如果您希望系统像用户提供的库一样加载它,请使用类似:

export DYLD_SHARED_REGION=avoid
./your_program_name

man dyld 来获取有关上述环境设置含义的更多信息。

I guess the reason is libstdc++ is considered a system library in OS X and is treated differently than other user libraries.

If you want the system to load it just like a user supplied library use something like:

export DYLD_SHARED_REGION=avoid
./your_program_name

man dyld for more information on what the above environment setting means.

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