Я пытаюсь статически связать свою программу с glibc, потому что версия glibc на целевой машине практически непредсказуема. Я использовал флаги компоновщика -static-libgcc и -static-libstdc++, и все работало нормально. Исполняемый файл большой, но я могу с ним жить. К сожалению, когда я запускаю свой исполняемый файл на целевой машине (в приведенном ниже примере он называется «mytest»), я получаю следующую ошибку:
./mytest: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by libboost_log.so.1.53.0)
./mytest: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by libboost_log.so.1.53.0)
./mytest: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by libboost_log.so.1.53.0)
./mytest: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by libboost_date_time.so.1.53.0)
./mytest: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by libboost_thread.so.1.53.0)
Если я делаю «строки» на моем тесте, это дает мне
$ strings mytest | grep GLIBC
GLIBC_2.9
GLIBC_2.7
GLIBC_2.8
GLIBC_2.3.2
GLIBC_2.2.5
GLIBCXX_3.4.15
GLIBCXX_3.4.11
GLIBCXX_3.4.14
GLIBCXX_3.4.9
GLIBCXX_3.4
Что означает, я думаю, что статическая ссылка работала нормально. Почему загрузчик все еще пытается искать мои функции в разделяемых glibc и libstdc++? Что я делаю неправильно?
Спасибо!