日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

32bit / 64bit co-exist Linux, ld-linux.so, l

系統 2480 0

before this, confirm that you don't have 32bit libs notably 32bit libc, e.g. you have?

/lib64/ld-linux-x86-64.so.2? but not? /lib32/ld-linux.so.2

https://wiki.debian.org/Multiarch?

?

run following on Debian 64bit to add basic support for 32bit programs (anyway you need ld-linux at least...)

      dpkg --add-
      
        architecture i386;

aptitude 
      
      
        install
      
       libc6-i386 libc6-dev-i386  (note that don't use libc6:i386 otherwise apt thinks you'd use libc-i386 as the main libc)
    

?

write a simple "hello world", and compile with different flags

      
        gcc
      
       -m32 hello.c -
      
        o hello32

ldd hello32

        linux
      
      -gate.so.
      
        1
      
       (
      
        0xf7765000
      
      
        )

        libc.so.
      
      
        6
      
       => /lib32/libc.so.
      
        6
      
       (
      
        0xf75a2000
      
      
        )

        
      
      /lib/
      
        ld
      
      -linux.so.
      
        2
      
       (
      
        0xf7766000
      
      
        )






      
      
        gcc
      
       -m64 hello.c -
      
        o hello64

ldd hello64

        linux
      
      -vdso.so.
      
        1
      
       (
      
        0x00007fff1cfa4000
      
      
        )

        libc.so.
      
      
        6
      
       => /lib/x86_64-linux-gnu/libc.so.
      
        6
      
       (
      
        0x00007fe71d001000
      
      
        )

        
      
      /lib64/
      
        ld
      
      -linux-x86-
      
        64
      
      .so.
      
        2
      
       (
      
        0x00007fe71d3c1000
      
      )
    

What is ld-linux.so.2?

This program is defined as part of the structure of the ELF file, in the? INTERP ?section of the program header. For 32bit linux binaries, this is the typical name of the 32bit interpreter. For 64bit binaries, you'll find it is typically called? ld-linux-x86_64.so.2 ?(for 64bit x86 platforms).

You can determine this information yourself using? readelf -l , and the INTERP section:

    
      INTERP         0x0000000000000238 0x0000000000400238 0x0000000000400238

               0x000000000000001c 0x000000000000001c  R      1

    [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
    
  

?

What is linux-gate.so.1? very good article on this:? http://www.trilithium.com/johan/2005/08/linux-gate/

there's not supposed to be a linux-gate.so.1 file present anywhere on the file system ; it's a virtual? DSO (dynamic shared object) , a shared object exposed by the kernel at a fixed address in every process' memory:
http://en.wikipedia.org/wiki/VDSO

for example, run "cat /proc/self/maps" and it'll give the memory layout of cat process

      
        cat
      
       /proc/self/
      
        maps


      
      
        00400000
      
      -0040b000 r-xp 
      
        00000000
      
      
        08
      
      :
      
        01
      
      
        403141
      
                                   /bin/
      
        cat
      
      
        

0060a000
      
      -0060b000 r--p 0000a000 
      
        08
      
      :
      
        01
      
      
        403141
      
                                   /bin/
      
        cat
      
      
        

0060b000
      
      -0060c000 rw-p 0000b000 
      
        08
      
      :
      
        01
      
      
        403141
      
                                   /bin/
      
        cat
      
      
        02376000
      
      -
      
        02397000
      
       rw-p 
      
        00000000
      
      
        00
      
      :
      
        00
      
      
        0
      
      
                                          [heap]

7fb1eabf3000
      
      -7fb1ead93000 r-xp 
      
        00000000
      
      
        08
      
      :
      
        01
      
      
        391959
      
                           /lib/x86_64-linux-gnu/libc-
      
        2.18
      
      
        .so

7fb1ead93000
      
      -7fb1eaf92000 ---p 001a0000 
      
        08
      
      :
      
        01
      
      
        391959
      
                           /lib/x86_64-linux-gnu/libc-
      
        2.18
      
      
        .so

7fb1eaf92000
      
      -7fb1eaf96000 r--p 0019f000 
      
        08
      
      :
      
        01
      
      
        391959
      
                           /lib/x86_64-linux-gnu/libc-
      
        2.18
      
      
        .so

7fb1eaf96000
      
      -7fb1eaf98000 rw-p 001a3000 
      
        08
      
      :
      
        01
      
      
        391959
      
                           /lib/x86_64-linux-gnu/libc-
      
        2.18
      
      
        .so

7fb1eaf98000
      
      -7fb1eaf9c000 rw-p 
      
        00000000
      
      
        00
      
      :
      
        00
      
      
        0
      
      
        

7fb1eaf9c000
      
      -7fb1eafbc000 r-xp 
      
        00000000
      
      
        08
      
      :
      
        01
      
      
        391749
      
                           /lib/x86_64-linux-gnu/
      
        ld
      
      -
      
        2.18
      
      
        .so

7fb1eb018000
      
      -7fb1eb1a1000 r--p 
      
        00000000
      
      
        08
      
      :
      
        01
      
      
        1052029
      
                          /usr/lib/locale/locale-
      
        archive

7fb1eb1a1000
      
      -7fb1eb1a4000 rw-p 
      
        00000000
      
      
        00
      
      :
      
        00
      
      
        0
      
      
        

7fb1eb1b9000
      
      -7fb1eb1bb000 rw-p 
      
        00000000
      
      
        00
      
      :
      
        00
      
      
        0
      
      
        

7fb1eb1bb000
      
      -7fb1eb1bc000 r--p 0001f000 
      
        08
      
      :
      
        01
      
      
        391749
      
                           /lib/x86_64-linux-gnu/
      
        ld
      
      -
      
        2.18
      
      
        .so

7fb1eb1bc000
      
      -7fb1eb1bd000 rw-p 
      
        00020000
      
      
        08
      
      :
      
        01
      
      
        391749
      
                           /lib/x86_64-linux-gnu/
      
        ld
      
      -
      
        2.18
      
      
        .so

7fb1eb1bd000
      
      -7fb1eb1be000 rw-p 
      
        00000000
      
      
        00
      
      :
      
        00
      
      
        0
      
      
        

7fff48a06000
      
      -7fff48a27000 rw-p 
      
        00000000
      
      
        00
      
      :
      
        00
      
      
        0
      
      
                                  [stack]

7fff48a49000
      
      -7fff48a4b000 r-xp 
      
        00000000
      
      
        00
      
      :
      
        00
      
      
        0
      
      
                                  [vdso]

ffffffffff600000
      
      -ffffffffff601000 r-xp 
      
        00000000
      
      
        00
      
      :
      
        00
      
      
        0
      
                        [vsyscall]
    

?

32bit / 64bit co-exist Linux, ld-linux.so, linux-gate.so.1 etc


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 怀宁县| 汉中市| 永清县| 泽普县| 潜江市| 台东县| 张家口市| 林口县| 青冈县| 桐乡市| 娱乐| 洛川县| 陆川县| 苏尼特左旗| 凯里市| 九江市| 山阴县| 垫江县| 宝应县| 察雅县| 浦东新区| 武定县| 兴城市| 江口县| 葫芦岛市| 穆棱市| 明水县| 松溪县| 宣汉县| 洛川县| 来宾市| 华坪县| 桂林市| 西充县| 淮阳县| 安达市| 五家渠市| 富平县| 安平县| 台前县| 榆树市|