zoukankan      html  css  js  c++  java
  • 32bit / 64bit co-exist Linux, ld-linux.so, linux-gate.so.1 etc

    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]
  • 相关阅读:
    ZOJ 3735 Cake(区间DP,最优三角剖分)
    POJ 1185 炮兵阵地 (状态压缩DP)
    POJ 3415 Common Substrings (后缀数组,长度不小于k的公共子串的个数)
    NSNumberFormatter 千分符
    遭遇String.getBytes()
    HDFS数据的Checksum
    hadoop mapreduce作业流程概论
    HDFS 安全模式
    hadoop的dfs.replication
    hadoop升级
  • 原文地址:https://www.cnblogs.com/qsort/p/3695430.html
Copyright © 2011-2022 走看看