Почему lsof не показывает, что libstdC++ загружен в Mac OS X?

У меня есть приложение, которое, как я знаю, использует libstdC++, но даже как суперпользователь, я не вижу /usr/lib/libstdc++.6.0.9.dylib в моей системе Mac OS X 10.6 Snow Leopard?

лсоф | 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.

1 ответ

Решение

Я предполагаю, что причина в том, что libstdC++ считается системной библиотекой в ​​OS X и обрабатывается иначе, чем другие пользовательские библиотеки.

Если вы хотите, чтобы система загружала его так же, как пользовательскую библиотеку, используйте что-то вроде:

export DYLD_SHARED_REGION=avoid
./your_program_name

man dyld для получения дополнительной информации о том, что означает вышеуказанная настройка среды.

Другие вопросы по тегам