51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Ubuntu 20.04无法运行imgrepacker的问题处理

由于要镜像重新打包,需要把镜像解包,然后发现imgrepacker这个工具在服务器上无法运行,在部分电脑上是可以运行的。

问题表现 {#问题表现}

给予imgrepacker可执行权限,然后执行./imgrepacker提示

                      $ ./imgrepacker
bash: ./imgrepacker: No such file or directory
                </code>
              </pre>

ldd查看依赖时提示

                      $ ldd imgrepacker
	not a dynamic executable
                </code>
              </pre>

在正常的电脑上提示如下

                      $ ./imgrepacker

    imgrepacker (version 2.0.7.8 linux)
    LiveSuit's & PhoenixSuit's (Allwinner) firmware images unpacker/packer

    (c) RedScorpio, Moscow, 2012-2022
        
                      RedScorpio.lab@gmail.com
                      

    Usage:	./imgrepacker [options] <file_or_dir_name>

    Type "./imgrepacker /help" for additional information

                    </code>
                  </pre>



 
                        
                          $ ldd imgrepacker
    	linux-gate.so.1 (0xf7fa8000)
    	libc.so.6 => /lib32/libc.so.6 (0xf7dba000)
    	/lib/ld-linux.so.2 (0xf7faa000)

                        
                      



 
问题排查 {#问题排查}
------------


 
确认程序是依赖

 
                        
                          objdump -p imgrepacker

    imgrepacker:     文件格式 elf32-i386


    程序头:
    PHDR off    0x00000034 vaddr 0x08048034 paddr 0x08048034 align 22
    filesz 0x00000120 memsz 0x00000120 flags r-x
    INTERP off 0x00000154 vaddr 0x08048154 paddr 0x08048154 align 20
    filesz 0x00000013 memsz 0x00000013 flags r--
    LOAD off    0x00000000 vaddr 0x08048000 paddr 0x08048000 align 212
    filesz 0x00029ff0 memsz 0x00029ff0 flags r-x
    LOAD off 0x0002af08 vaddr 0x08073f08 paddr 0x08073f08 align 212
    filesz 0x00000760 memsz 0x0000d4b8 flags rw-
    DYNAMIC off    0x0002af14 vaddr 0x08073f14 paddr 0x08073f14 align 22
    filesz 0x000000e8 memsz 0x000000e8 flags rw-
    NOTE off 0x00000168 vaddr 0x08048168 paddr 0x08048168 align 22
    filesz 0x00000044 memsz 0x00000044 flags r--
    EH_FRAME off    0x000271f4 vaddr 0x0806f1f4 paddr 0x0806f1f4 align 22
    filesz 0x00000554 memsz 0x00000554 flags r--
    STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 24
    filesz 0x00000000 memsz 0x00000000 flags rw-
    RELRO off    0x0002af08 vaddr 0x08073f08 paddr 0x08073f08 align 2\*\*0
    filesz 0x000000f8 memsz 0x000000f8 flags r--


    动态节:
    NEEDED               libc.so.6
    INIT                 0x08048964
    FINI                 0x08069764
    INIT_ARRAY           0x08073f08
    INIT_ARRAYSZ         0x00000004
    FINI_ARRAY           0x08073f0c
    FINI_ARRAYSZ         0x00000004
    GNU_HASH             0x080481ac
    STRTAB               0x0804851c
    SYMTAB               0x080481cc
    STRSZ                0x000001e3
    SYMENT               0x00000010
    DEBUG                0x00000000
    PLTGOT               0x08074000
    PLTRELSZ             0x00000190
    PLTREL               0x00000011
    JMPREL               0x080487d4
    REL                  0x080487cc
    RELSZ                0x00000008
    RELENT               0x00000008
    VERNEED              0x0804876c
    VERNEEDNUM           0x00000001
    VERSYM               0x08048700


    版本引用:
    required from libc.so.6:
    0x0d696913 0x00 06 GLIBC_2.3
    0x0d696911 0x00 05 GLIBC_2.1
    0x0d696917 0x00 04 GLIBC_2.7
    0x0d696910 0x00 03 GLIBC_2.0
    0x0d696912 0x00 02 GLIBC_2.2


                        </code>
                      </pre>



     
    这里如果提示objdump不可用按如下处理

     
                            
                              $ objdump -p imgrepacker

        Command 'objdump' not found, but can be installed with:


        apt install binutils
        Please ask your administrator.


                            </code>
                          </pre>



         
        确认了是32位程序非动态可执行文件,那就问问AI。

         
        问题处理 {#问题处理}
        ------------


         
        添加32位架构支持

         
                                
                                  sudo dpkg --add-architecture i386

                                </code>
                              </pre>



             
            更新软件包列表

             
                                    
                                      sudo apt update

                                    </code>
                                  </pre>



                 
                安装通用的32位库

                 
                                        
                                          sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386

                                        </code>
                                      </pre>



                     
                    问题总结 {#问题总结}
                    ------------


                     
                    问题点主要是集中于能否运行32位程序上,提示信息让人摸不着头脑而已。

赞(1)
未经允许不得转载:工具盒子 » Ubuntu 20.04无法运行imgrepacker的问题处理