Я делаю эту вещь все время, и она отлично работает. Я почти уверен, что у этого парня была совершенно не связанная проблема, и он обвинил в этом пути поиска в библиотеке.
Я никогда не видел ни одного дистрибутива Linux, где libstdc++.so
не находится на пути /usr/lib[64]/
.
Что также заставляет меня задуматься о том, как программы C ++ обычно работают для этого парня, поскольку, насколько мне известно, путь поиска файлов .so
не зависит от языка.
Может, он всегда использует специальную версию и компилирует все свои программы с опциями компоновщика -rpath
? Но даже тогда простое добавление этой опции к его программам на Си тоже сработало бы.
произойдет сбой, как только он динамически загрузит ваш .so во время выполнения: ваш
.so будет пытаться динамически загрузить стандартную библиотеку .so, она не будет
найдите его, и ваша программа завершит работу.
Это заставляет меня задуматься, относится ли он исключительно к использованию dlopen()
самостоятельно .so
. Но и тогда он работает просто отлично, если только вы не связали .so
с вашим libstdc++.so
(что тогда было бы вашей собственной ошибкой; это было бы той же проблемой, если бы вы зависели от любой другой библиотеки, независимо от того, на каком языке это было написано в).