これが明らかな質問である場合は申し訳ありませんが、Web上で驚くほど少ない参照を見つけました...
私はビジネスパートナーの1人によってCで記述され、Fedora 11上に構築された.soバイナリファイルとして提供されたAPIを使用しています。私たちは、Fedora11開発マシンでAPIを問題なくテストしています。ただし、お客様のターゲットプラットフォーム(たまたまSuSE Enterprise 10.2)でAPIにリンクしようとすると、「ファイル形式が認識されません」というエラーが発生します。
objdumpやnmなどのbinutilsパッケージの一部でもあるコマンドでは、同じファイル形式エラーが発生します。「file」コマンドは私に示します:
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]
これは、2つのプラットフォーム上のCライブラリ間の非互換性によるものだと思います。問題は、コードがSuSE10.2で利用可能なものよりも新しいバージョンのglibcなどに対してコンパイルされていることです。この質問は、パートナーのFedora11プラットフォームでSuSE10.2でも実行できるようにコードをコンパイルする方法があるという偶然の機会に投稿しています。