我下载并编译了glibc-2.13。当我尝试运行一个进行malloc()的C程序时,出现以下错误:
elf文件OS ABI无效
请问有没有人能给我一些有用的指针来解决这个问题。请注意我的内核版本是linux-2.6.35.9。
我下载并编译了glibc-2.13。当我尝试运行一个进行malloc()的C程序时,出现以下错误:
elf文件OS ABI无效
请问有没有人能给我一些有用的指针来解决这个问题。请注意我的内核版本是linux-2.6.35.9。
问题不在于您的内核版本。
您的系统加载程序不支持新的Linux
ABI。最近,为了支持STT_GNU_IFUNC,Linux
ABI被添加到Linux ELF二进制文件中。您需要更新您的系统C库,以使其具备支持STT_GNU_IFUNC的加载程序,然后它也将识别具有Linux
ABI类型的ELF对象。
如果您感兴趣,可以参见Dave Miller关于Sparc的STT_GNU_IFUNC的博客文章(已存档),以了解STT_GNU_IFUNC的作用。
有可能您的glibc是使用了--enable-multiarch
编译标记,这强制使用ifunc和新的LINUX ABI。
--enable-multiarch
是默认设置,您应该通过设置 --enable-multiarch=no
来禁用它。