Извините, если это очевидный вопрос, но я нашел на удивление мало ссылок в Интернете...
Я работаю с API, написанным на C одним из наших деловых партнеров и предоставленным нам в виде двоичного файла .so, созданного на Fedora 11. Мы тестировали API на машине разработки Fedora 11 без проблем. Однако, когда я пытаюсь установить связь с API на целевой платформе нашего клиента, которой является SuSE Enterprise 10.2, я получаю сообщение об ошибке «Формат файла не распознан».
Команды, которые также являются частью пакета binutils, такие как objdump или nm, выдают ту же ошибку формата файла. Команда «файл» показывает мне:
ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped
и команда "ldd" показывает:
ldd: warning: you do not have execution permission for `./libuscuavactivity.so.1.1'
./libuscuavactivity.so.1.1: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./libuscuavactivity.so.1.1)
[dependent library list]
Я предполагаю, что это связано с несовместимостью между библиотеками C на двух платформах, проблема в том, что код был скомпилирован для новой версии glibc и т. д., чем та, которая доступна на SuSE 10.2. Я публикую этот вопрос на тот случай, если есть способ скомпилировать код на платформе нашего партнера Fedora 11 таким образом, чтобы он также работал на SuSE 10.2.