Я написал программу на Visual C# 2010 Express для Windows 7, 64 бит. После некоторых усилий мне удалось заставить его работать на моей виртуальной машине Ubuntu (32-разрядная версия) (перекомпилирован в MonoDevelop и использовал mkbundle). Клиент сообщил мне, что у него следующая версия: «Linux version 2.6.18-274.el5.028stab093.2 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) ". Команда «cat /etc/redhat-release» возвращает «CentOS Release 5.7 (Final)». Я получил доступ к его серверу и загрузил вывод mkbundle (который отлично работает в Ubuntu). Программа вернула следующую ошибку:
$ ./ProgName img.jpg
./ProgName: /lib/libc.so.6: version `GLIBC_2.9' not found (required by ./ProgName)
./ProgName: /lib/libc.so.6: version `GLIBC_2.11' not found (required by ./ProgName)
./ProgName: /lib/libc.so.6: version `GLIBC_2.8' not found (required by ./ProgName)
Как решить эту проблему? У меня очень мало знаний о системах Linux. Я предполагаю, что мне нужно скачать библиотеки, указанные выше, но у меня есть следующие вопросы:
- Если я скачаю эти библиотеки, может ли это как-то навредить серверу? Я бы не хотел навредить серверу клиента.
- Зачем программе "mkbundled" дополнительные библиотеки? Я использовал «--static» с mkbundle, и на выходе получается файл размером 5,7 МБ, поэтому я подумал, что внутри уже есть все необходимые библиотеки.
Есть ли другой способ решить эту проблему?
РЕДАКТИРОВАТЬ: Я думаю, что, возможно, если мне удастся скомпилировать проект на клиентском сервере, он будет работать, но я не могу найти моно для этой версии Linux. Есть ли способ установить моно на эту систему? Если нет, то какие еще варианты у меня есть? В худшем случае я подумываю переписать свою программу на C++.
libc.so
. - person Basile Starynkevitch   schedule 05.01.2012