Запуск программы, скомпилированной из clang + llvm, на другой машине - PullRequest
3 голосов
/ 26 марта 2012

Я компилирую программу через clang + llvm (версия 3.1) и пытаюсь запустить ее на компьютере, который также имеет ту же версию clang + llvm.Я компилирую на Ubuntu 10, но на другом компьютере, на котором я пытаюсь работать, установлен CentOS 5. Там (в CentOS) я также сталкиваюсь с проблемами компиляции через LLVM (этап компиляции реализован в LLVM).Вот почему я подумал о компиляции в Ubuntu, взял оттуда exe и просто запустил его на компьютере CentOS.

Однако, когда я пытаюсь это сделать, я получаю следующую ошибку.

./main: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./main)
./main: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./main)

Как я могу решить это.Обратите внимание, что у меня нет root-прав на этом компьютере.

Ответы [ 3 ]

3 голосов
/ 26 марта 2012

Одним из решений будет копирование библиотеки с вашего рабочего компьютера с Ubuntu на компьютер CentOS.Вставьте ваш Home / Workdir / whereever (TM) и установите переменную LD_PRELOAD для этой библиотеки.Но это может быть довольно утомительным, так как возможно, что это не единственная библиотека, которая отсутствует (и, возможно, библиотеки зависят от других библиотек, которые вам также нужны ...).обе машины имеют одинаковую архитектуру (например, она не будет работать, если ваша машина с Ubuntu 32-разрядная и CentOS 64).

2 голосов
/ 26 марта 2012

Centos 5 использует более старую версию libstdc ++, чем Ubuntu 11.04 или 11.10, поэтому не может использовать оттуда двоичные файлы.

Либо скомпилируйте в Centos 5, либо найдите более старую среду компиляции, которая работает. Если вы используете gcc, вы также можете исследовать среду компилятора LSB.

1 голос
/ 26 марта 2012

Кросс-компиляция всегда сложная проблема. В вашем случае у вас есть разные версии библиотеки C ++ на двух машинах. Если вам не нужно делать это часто, я предлагаю вам попытаться решить проблему с компиляцией в CentOS. Это, вероятно, более простой способ.

...