Вся альтернатива, которая не работает для меня, но, возможно, кто-то найдет ее полезной, - это статически связать libgcc и libstdc ++.
gcc имеет параметр -static-libgcc
, но просто с помощью этого параметраничего не достигает, так как libstdc ++ все еще динамически связан.Но, убедившись, что gcc может найти только статическую версию libstdc ++, можно добиться статической компоновки.
ln -s `g++ -print-file-name=libstdc++.a`
g++ -static-libgcc -L. source.cpp
Проблема в том, что библиотеки boost были созданы на основе более новой libstdc ++, поэтому, хотя программа компилируется правильно, онагенерирует ошибки во время выполнения ...
Может быть, это решаемо, если я тоже перестрою boost, не пробовал этого.
(для записи, если вы используете любой код, который динамически загружает библиотеки черезнапример, dlopen
, статическое связывание - все это исключено)