抱歉如果这是一个显而易见的问题,但我在网络上找到的参考资料令人惊讶地少...
我正在使用由我们的商业合作伙伴编写并以.so二进制文件的形式提供给我们的C API,在Fedora 11上构建。我们已经在Fedora 11开发机上测试了API,没有任何问题。然而,当我尝试在客户的目标平台(恰好是SuSE Enterprise 10.2)上链接该API时,我会收到“文件格式不被识别”的错误。
与binutils软件包一起提供的命令,例如objdump或nm,也会给我相同的文件格式错误。 “file”命令显示:
我正在使用由我们的商业合作伙伴编写并以.so二进制文件的形式提供给我们的C API,在Fedora 11上构建。我们已经在Fedora 11开发机上测试了API,没有任何问题。然而,当我尝试在客户的目标平台(恰好是SuSE Enterprise 10.2)上链接该API时,我会收到“文件格式不被识别”的错误。
与binutils软件包一起提供的命令,例如objdump或nm,也会给我相同的文件格式错误。 “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]
我猜测这是由于两个平台上的C库不兼容造成的问题,问题在于代码编译时使用了比SuSE 10.2提供的glibc版本更新的版本等。我发布这个问题,希望有办法在我们合作伙伴的Fedora 11平台上编译代码,以便它也能在SuSE 10.2上运行。