ошибка общего объекта при использовании бинарного файла на другом компьютере - PullRequest
1 голос
/ 11 августа 2011

Как я могу избежать этого?У меня есть довольно простая программа на С ++, скомпилированная на Ubuntu Box.Когда я перемещаю его в red hat и пытаюсь выполнить его, я получаю сообщение об ошибке:

cannot find shared object stdlibc++5.so

Как это обходится коммерческим программным обеспечением, установленный на компьютерах пользователей stdlib будет сильно различаться.Есть ли какой-то флаг, который мне нужно использовать при компиляции?

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

Я думаю, вам нужно перекомпилировать его снова, потому что:

  1. ОС отличается [Ubuntu и Red Hat]
  2. Расположение библиотек может быть другим. Также есть шансы (хотя очень минута), что библиотеки stdc ++ нет вообще.
  3. В коммерческом программном обеспечении, использующем скомпилированные языки, такие как C / C ++, приложения развернуты на одной и той же ОС (как разработки, так и производства .. насколько я знаю) и обычно, расположение библиотек также соответствует

Итак, пожалуйста, проверьте, можете ли вы скомпилировать ваш код C ++ (может быть, привет) и скомпилировать ваш код снова.

1 голос
/ 11 августа 2011

Причин может быть несколько;насколько вы знаете, на целевой машине может не быть установлен g ++ и его библиотеки.Единственное реальное решение - статически связать стандартную библиотеку C ++, используя опцию -static-libstdc++.

...