当前位置: 技术问答>linux和unix
/usr/lib/libc.so.1: bad ELF interpreter错误
来源: 互联网 发布时间:2016-12-20
本文导语: 这是自己写的一个链接脚本,保存为ld.script OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(Test) SEARCH_DIR("/usr/local/i686-pc-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS{ . =...
这是自己写的一个链接脚本,保存为ld.script
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(Test)
SEARCH_DIR("/usr/local/i686-pc-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
SECTIONS{
. = 0x08048000;
.text :{ *(.text) *(.rdata) }
.data :{*(.data)}
.bss :{ *(.bss)}
.interp : { *(.interp) }
/DISCARD/ : { *(.comment)}
}
在链接的时候:
ld -T ld.script -o t t.o -lc
执行时出错:
bash: ./t: /usr/lib/libc.so.1: bad ELF interpreter: No such file or directory
查看信息
readelf -l t
发现,interpreter变成了/usr/lib/libc.so.1:
INTERP 0x001118 0x08048118 0x08048118 0x00013 0x00013 R 0x1
[Requesting program interpreter: /usr/lib/libc.so.1]
正常情况应该是:
/lib/ld-linux.so.2
请问为什么会变成/usr/lib/libc.so.1?
如何修改?
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(Test)
SEARCH_DIR("/usr/local/i686-pc-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
SECTIONS{
. = 0x08048000;
.text :{ *(.text) *(.rdata) }
.data :{*(.data)}
.bss :{ *(.bss)}
.interp : { *(.interp) }
/DISCARD/ : { *(.comment)}
}
在链接的时候:
ld -T ld.script -o t t.o -lc
执行时出错:
bash: ./t: /usr/lib/libc.so.1: bad ELF interpreter: No such file or directory
查看信息
readelf -l t
发现,interpreter变成了/usr/lib/libc.so.1:
INTERP 0x001118 0x08048118 0x08048118 0x00013 0x00013 R 0x1
[Requesting program interpreter: /usr/lib/libc.so.1]
正常情况应该是:
/lib/ld-linux.so.2
请问为什么会变成/usr/lib/libc.so.1?
如何修改?
|
ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o swap.out main.o swap.o /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc/i686-redhat-linux/4.5.1/crtbegin.o /usr/lib/libc.so /usr/lib/gcc/i686-redhat-linux/4.5.1/crtend.o /usr/lib/crtn.o
-dynamic-linker /lib/ld-linux.so.2 把这个选项加上 就能解决你现在的这个问题
-dynamic-linker /lib/ld-linux.so.2 把这个选项加上 就能解决你现在的这个问题