2014年(4)
分类: C/C++
2014-09-18 16:05:19
装了ubuntu server 64bit版本,安装完gcc工具链后,下载版本进行编译,在编译linux内核时,报“./mksymtbl -bash: ./mksymtbl: No such file or directory”,查看路径,文件存在,而且权限是可执行的。上网查询,原来No such file or directory并不只是文件找不到,还存有文件格式不可执行等其他原因,执行ldd mksymtbl,返回not a dynamic executable;再次执行file mksymtbl,返回mksymtbl: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped,原来mksymtbl是32位程序,而ubuntu server是64位系统,没有包含32位的库,因此程序执行不成功。执行readelf -l mksymtbl,结果如下:
Elf file type is EXEC (Executable file)
Entry point 0x80487a0
There are 7 program headers, starting at offset 52
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x000034 0x08048034 0x08048034 0x000e0 0x000e0 R E 0x4
INTERP 0x000114 0x08048114 0x08048114 0x00013 0x00013 R 0x1
[Requesting program interpreter: /lib/ld-linux.so.2]--------需要该链接库
LOAD 0x000000 0x08048000 0x08048000 0x05070 0x05070 R E 0x1000
LOAD 0x005070 0x0804e070 0x0804e070 0x00374 0x32894 RW 0x1000
DYNAMIC 0x005084 0x0804e084 0x0804e084 0x000c8 0x000c8 RW 0x4
NOTE 0x000128 0x08048128 0x08048128 0x00020 0x00020 R 0x4
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4
Section to Segment mapping:
Segment Sections...
00
01 .interp
02 .interp .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame
03 .ctors .dtors .jcr .dynamic .got .got.plt .data .bss
04 .dynamic
05 .note.ABI-tag
06
因此在该机器上安装ia32-libs库,即可解决该问题。