linux应用程序编译过程分析

1. 源码

#include <stdlib.h>

int main(int argc, char *argv[])
{
	printf("hello world\n");
	return 0;
}

2. 预处理编译

nuc972-arm-none-linux-gnueabi-gcc -v -E helloworld.c -o -helloworld.i
#-v:输出预处理过程中的调试信息
#-E:预处理编译参数
Using built-in specs.
COLLECT_GCC=nuc972-arm-none-linux-gnueabi-gcc
Target: arm-none-linux-gnueabi
Configured with: /scratch/maciej/arm-linux-2014.05-rel/src/gcc-4.8-2014.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2014 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=29' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery CodeBench Lite 2014.05-29' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-cloog=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libitm --enable-libatomic --disable-libssp --enable-poison-system-directories --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin SED=sed
Thread model: posix
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29) 
COLLECT_GCC_OPTIONS='-v' '-E' '-o' '-helloworld.i' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'
 /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/cc1 -E -quiet -v -iprefix /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/ -isysroot /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc -D __CS_SOURCERYGXX_MAJ__=2014 -D __CS_SOURCERYGXX_MIN__=5 -D __CS_SOURCERYGXX_REV__=29 helloworld.c -o -helloworld.i -march=armv5te -mtls-dialect=gnu -funwind-tables
ignoring duplicate directory "/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/../../lib/gcc/arm-none-linux-gnueabi/4.8.3/include"
ignoring nonexistent directory "/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/local/include"
ignoring duplicate directory "/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/../../lib/gcc/arm-none-linux-gnueabi/4.8.3/include-fixed"
ignoring duplicate directory "/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/../../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/include
 /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/include-fixed
 /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/include
 /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/include
End of search list.
COMPILER_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/
LIBRARY_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-E' '-o' '-helloworld.i' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'

3. 汇编

nuc972-arm-none-linux-gnueabi-gcc -v -S helloworld.i -o helloworld.s
#-v:输出预处理过程中的调试信息
#-S:编译为汇编代码
Using built-in specs.
COLLECT_GCC=nuc972-arm-none-linux-gnueabi-gcc
Target: arm-none-linux-gnueabi
Configured with: /scratch/maciej/arm-linux-2014.05-rel/src/gcc-4.8-2014.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2014 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=29' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery CodeBench Lite 2014.05-29' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-cloog=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libitm --enable-libatomic --disable-libssp --enable-poison-system-directories --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin SED=sed
Thread model: posix
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29) 
COLLECT_GCC_OPTIONS='-v' '-S' '-o' 'helloworld.s' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'
 /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/cc1 -fpreprocessed helloworld.i -quiet -dumpbase helloworld.i -march=armv5te -mtls-dialect=gnu -auxbase-strip helloworld.s -version -funwind-tables -o helloworld.s
GNU C (Sourcery CodeBench Lite 2014.05-29) version 4.8.3 20140320 (prerelease) (arm-none-linux-gnueabi)
	compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.1-p2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C (Sourcery CodeBench Lite 2014.05-29) version 4.8.3 20140320 (prerelease) (arm-none-linux-gnueabi)
	compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.1-p2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 6aba13becf054534a1fc101696595de0
COMPILER_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/
LIBRARY_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-S' '-o' 'helloworld.s' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'

4.目标文件

nuc972-arm-none-linux-gnueabi-gcc -v -c helloworld.s -o helloworld.o
#-v:输出预处理过程中的调试信息
#-o:编译为目标文件
Using built-in specs.
COLLECT_GCC=nuc972-arm-none-linux-gnueabi-gcc
Target: arm-none-linux-gnueabi
Configured with: /scratch/maciej/arm-linux-2014.05-rel/src/gcc-4.8-2014.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2014 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=29' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery CodeBench Lite 2014.05-29' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-cloog=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libitm --enable-libatomic --disable-libssp --enable-poison-system-directories --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin SED=sed
Thread model: posix
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29) 
COLLECT_GCC_OPTIONS='-v' '-c' '-o' 'helloworld.o' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'
 /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/as -v -march=armv5te -meabi=5 -o helloworld.o helloworld.s
GNU assembler version 2.24.51 (arm-none-linux-gnueabi) using BFD version (Sourcery CodeBench Lite 2014.05-29) 2.24.51.20140217
COMPILER_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/
LIBRARY_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-c' '-o' 'helloworld.o' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'

5.链接

nuc972-arm-none-linux-gnueabi-gcc -v -g -Wall helloworld.c -o helloworld
#-v:输出预处理过程中的调试信息
#-g:增加debug调试
End of search list.
GNU C (Sourcery CodeBench Lite 2014.05-29) version 4.8.3 20140320 (prerelease) (arm-none-linux-gnueabi)
	compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.1-p2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 6aba13becf054534a1fc101696595de0
helloworld.c: In function 'main':
helloworld.c:5:2: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration]
  printf("hello world\n");
  ^
helloworld.c:5:2: warning: incompatible implicit declaration of built-in function 'printf' [enabled by default]
COLLECT_GCC_OPTIONS='-v' '-g' '-Wall' '-o' 'helloworld' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'
 /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/as -v -march=armv5te -meabi=5 -o /tmp/cccWbISi.o /tmp/ccROSG6e.s
GNU assembler version 2.24.51 (arm-none-linux-gnueabi) using BFD version (Sourcery CodeBench Lite 2014.05-29) 2.24.51.20140217
COMPILER_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/
LIBRARY_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-g' '-Wall' '-o' 'helloworld' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'
 /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/collect2 --sysroot=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc --eh-frame-hdr -dynamic-linker /lib/ld-linux.so.3 -X -m armelf_linux_eabi -o helloworld /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/crt1.o /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/crti.o /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/crtbegin.o -L/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3 -L/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc -L/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/lib -L/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/lib -L/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib /tmp/cccWbISi.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/crtend.o /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/crtn.o

6.目标文件查看

readelf -a helloworld
ELF 头:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (可执行文件)
  Machine:                           ARM
  Version:                           0x1
  入口点地址:               0x83e0
  程序头起点:          52 (bytes into file)
  Start of section headers:          3160 (bytes into file)
  标志:             0x5000202, has entry point, Version5 EABI, soft-float ABI
  本头的大小:       52 (字节)
  程序头大小:       32 (字节)
  Number of program headers:         8
  节头大小:         40 (字节)
  节头数量:         36
  字符串表索引节头: 33

节头:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .interp           PROGBITS        00008134 000134 000013 00   A  0   0  1
  [ 2] .note.ABI-tag     NOTE            00008148 000148 000020 00   A  0   0  4
  [ 3] .hash             HASH            00008168 000168 00003c 04   A  4   0  4
  [ 4] .dynsym           DYNSYM          000081a4 0001a4 0000a0 10   A  5   1  4
  [ 5] .dynstr           STRTAB          00008244 000244 0000cf 00   A  0   0  1
  [ 6] .gnu.version      VERSYM          00008314 000314 000014 02   A  4   0  2
  [ 7] .gnu.version_r    VERNEED         00008328 000328 000040 00   A  5   2  4
  [ 8] .rel.dyn          REL             00008368 000368 000008 08   A  4   0  4
  [ 9] .rel.plt          REL             00008370 000370 000020 08  AI  4  11  4
  [10] .init             PROGBITS        00008390 000390 00000c 00  AX  0   0  4
  [11] .plt              PROGBITS        0000839c 00039c 000044 04  AX  0   0  4
  [12] .text             PROGBITS        000083e0 0003e0 0001cc 00  AX  0   0  4
  [13] .fini             PROGBITS        000085ac 0005ac 000008 00  AX  0   0  4
  [14] .rodata           PROGBITS        000085b4 0005b4 000010 00   A  0   0  4
  [15] .ARM.extab        PROGBITS        000085c4 0005c4 000030 00   A  0   0  4
  [16] .ARM.exidx        ARM_EXIDX       000085f4 0005f4 000048 00  AL 12   0  4
  [17] .eh_frame         PROGBITS        0000863c 00063c 000004 00   A  0   0  4
  [18] .init_array       INIT_ARRAY      00010640 000640 000004 00  WA  0   0  4
  [19] .fini_array       FINI_ARRAY      00010644 000644 000004 00  WA  0   0  4
  [20] .jcr              PROGBITS        00010648 000648 000004 00  WA  0   0  4
  [21] .dynamic          DYNAMIC         0001064c 00064c 0000f0 08  WA  5   0  4
  [22] .got              PROGBITS        0001073c 00073c 000020 04  WA  0   0  4
  [23] .data             PROGBITS        0001075c 00075c 000008 00  WA  0   0  4
  [24] .bss              NOBITS          00010764 000764 000004 00  WA  0   0  1
  [25] .comment          PROGBITS        00000000 000764 000046 01  MS  0   0  1
  [26] .ARM.attributes   ARM_ATTRIBUTES  00000000 0007aa 00002b 00      0   0  1
  [27] .debug_aranges    PROGBITS        00000000 0007d5 000020 00      0   0  1
  [28] .debug_info       PROGBITS        00000000 0007f5 0000d9 00      0   0  1
  [29] .debug_abbrev     PROGBITS        00000000 0008ce 000084 00      0   0  1
  [30] .debug_line       PROGBITS        00000000 000952 00004b 00      0   0  1
  [31] .debug_frame      PROGBITS        00000000 0009a0 000070 00      0   0  4
  [32] .debug_str        PROGBITS        00000000 000a10 0000fa 01  MS  0   0  1
  [33] .shstrtab         STRTAB          00000000 000b0a 00014b 00      0   0  1
  [34] .symtab           SYMTAB          00000000 0011f8 0007f0 10     35 100  4
  [35] .strtab           STRTAB          00000000 0019e8 00048c 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings)
  I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)

There are no section groups in this file.

程序头:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  EXIDX          0x0005f4 0x000085f4 0x000085f4 0x00048 0x00048 R   0x4
  PHDR           0x000034 0x00008034 0x00008034 0x00100 0x00100 R E 0x4
  INTERP         0x000134 0x00008134 0x00008134 0x00013 0x00013 R   0x1
      [Requesting program interpreter: /lib/ld-linux.so.3]
  LOAD           0x000000 0x00008000 0x00008000 0x00640 0x00640 R E 0x8000
  LOAD           0x000640 0x00010640 0x00010640 0x00124 0x00128 RW  0x8000
  DYNAMIC        0x00064c 0x0001064c 0x0001064c 0x000f0 0x000f0 RW  0x4
  NOTE           0x000148 0x00008148 0x00008148 0x00020 0x00020 R   0x4
  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x10

 Section to Segment mapping:
  段节...
   00     .ARM.exidx 
   01     
   02     .interp 
   03     .interp .note.ABI-tag .hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .ARM.extab .ARM.exidx .eh_frame 
   04     .init_array .fini_array .jcr .dynamic .got .data .bss 
   05     .dynamic 
   06     .note.ABI-tag 
   07     

Dynamic section at offset 0x64c contains 25 entries:
  标记        类型                         名称/值
 0x00000001 (NEEDED)                     共享库:[libgcc_s.so.1]
 0x00000001 (NEEDED)                     共享库:[libc.so.6]
 0x0000000c (INIT)                       0x8390
 0x0000000d (FINI)                       0x85ac
 0x00000019 (INIT_ARRAY)                 0x10640
 0x0000001b (INIT_ARRAYSZ)               4 (bytes)
 0x0000001a (FINI_ARRAY)                 0x10644
 0x0000001c (FINI_ARRAYSZ)               4 (bytes)
 0x00000004 (HASH)                       0x8168
 0x00000005 (STRTAB)                     0x8244
 0x00000006 (SYMTAB)                     0x81a4
 0x0000000a (STRSZ)                      207 (bytes)
 0x0000000b (SYMENT)                     16 (bytes)
 0x00000015 (DEBUG)                      0x0
 0x00000003 (PLTGOT)                     0x1073c
 0x00000002 (PLTRELSZ)                   32 (bytes)
 0x00000014 (PLTREL)                     REL
 0x00000017 (JMPREL)                     0x8370
 0x00000011 (REL)                        0x8368
 0x00000012 (RELSZ)                      8 (bytes)
 0x00000013 (RELENT)                     8 (bytes)
 0x6ffffffe (VERNEED)                    0x8328
 0x6fffffff (VERNEEDNUM)                 2
 0x6ffffff0 (VERSYM)                     0x8314
 0x00000000 (NULL)                       0x0

重定位节 '.rel.dyn' 位于偏移量 0x368 含有 1 个条目:
 Offset     Info    Type            Sym.Value  Sym. Name
00010758  00000515 R_ARM_GLOB_DAT    00000000   __gmon_start__

重定位节 '.rel.plt' 位于偏移量 0x370 含有 4 个条目:
 Offset     Info    Type            Sym.Value  Sym. Name
00010748  00000316 R_ARM_JUMP_SLOT   000083b0   puts
0001074c  00000416 R_ARM_JUMP_SLOT   000083bc   __libc_start_main
00010750  00000516 R_ARM_JUMP_SLOT   00000000   __gmon_start__
00010754  00000916 R_ARM_JUMP_SLOT   000083d4   abort

Unwind table index '.ARM.exidx' at offset 0x5f4 contains 9 entries:

0x83e0 <_start>: 0x1 [cantunwind]

0x8440 <deregister_tm_clones>: @0x85c4
  Compact model index: 1
  0xb1 0x08 pop {r3}
  0x84 0x00 pop {r14}
  0xb0      finish
  0xb0      finish

0x8478 <register_tm_clones>: @0x85d0
  Compact model index: 1
  0xb1 0x08 pop {r3}
  0x84 0x00 pop {r14}
  0xb0      finish
  0xb0      finish

0x84b8 <__do_global_dtors_aux>: 0x80a8b0b0
  Compact model index: 0
  0xa8      pop {r4, r14}
  0xb0      finish
  0xb0      finish

0x84e0 <frame_dummy>: @0x85dc
  Compact model index: 1
  0xb1 0x08 pop {r3}
  0x84 0x00 pop {r14}
  0xb0      finish
  0xb0      finish

0x8514 <main>: @0x85e8
  Compact model index: 1
  0x9b      vsp = r11
  0x40      vsp = vsp - 4
  0x84 0x80 pop {r11, r14}
  0xb0      finish
  0xb0      finish

0x8544 <__libc_csu_init>: 0x80b108ad
  Compact model index: 0
  0xb1 0x08 pop {r3}
  0xad      pop {r4, r5, r6, r7, r8, r9, r14}

0x85a8 <__libc_csu_fini>: 0x80b0b0b0
  Compact model index: 0
  0xb0      finish
  0xb0      finish
  0xb0      finish

0x85ac <_fini>: 0x1 [cantunwind]


Symbol table '.dynsym' contains 10 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 00000000     0 FUNC    GLOBAL DEFAULT  UND __aeabi_unwind_cpp_pr0@GCC_3.5 (2)
     2: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_deregisterTMCloneTab
     3: 000083b0     0 FUNC    GLOBAL DEFAULT  UND puts@GLIBC_2.4 (3)
     4: 000083bc     0 FUNC    GLOBAL DEFAULT  UND __libc_start_main@GLIBC_2.4 (3)
     5: 00000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__
     6: 00000000     0 FUNC    GLOBAL DEFAULT  UND __aeabi_unwind_cpp_pr1@GCC_3.5 (2)
     7: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _Jv_RegisterClasses
     8: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_registerTMCloneTable
     9: 000083d4     0 FUNC    GLOBAL DEFAULT  UND abort@GLIBC_2.4 (3)

Symbol table '.symtab' contains 127 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 00008134     0 SECTION LOCAL  DEFAULT    1 
     2: 00008148     0 SECTION LOCAL  DEFAULT    2 
     3: 00008168     0 SECTION LOCAL  DEFAULT    3 
     4: 000081a4     0 SECTION LOCAL  DEFAULT    4 
     5: 00008244     0 SECTION LOCAL  DEFAULT    5 
     6: 00008314     0 SECTION LOCAL  DEFAULT    6 
     7: 00008328     0 SECTION LOCAL  DEFAULT    7 
     8: 00008368     0 SECTION LOCAL  DEFAULT    8 
     9: 00008370     0 SECTION LOCAL  DEFAULT    9 
    10: 00008390     0 SECTION LOCAL  DEFAULT   10 
    11: 0000839c     0 SECTION LOCAL  DEFAULT   11 
    12: 000083e0     0 SECTION LOCAL  DEFAULT   12 
    13: 000085ac     0 SECTION LOCAL  DEFAULT   13 
    14: 000085b4     0 SECTION LOCAL  DEFAULT   14 
    15: 000085c4     0 SECTION LOCAL  DEFAULT   15 
    16: 000085f4     0 SECTION LOCAL  DEFAULT   16 
    17: 0000863c     0 SECTION LOCAL  DEFAULT   17 
    18: 00010640     0 SECTION LOCAL  DEFAULT   18 
    19: 00010644     0 SECTION LOCAL  DEFAULT   19 
    20: 00010648     0 SECTION LOCAL  DEFAULT   20 
    21: 0001064c     0 SECTION LOCAL  DEFAULT   21 
    22: 0001073c     0 SECTION LOCAL  DEFAULT   22 
    23: 0001075c     0 SECTION LOCAL  DEFAULT   23 
    24: 00010764     0 SECTION LOCAL  DEFAULT   24 
    25: 00000000     0 SECTION LOCAL  DEFAULT   25 
    26: 00000000     0 SECTION LOCAL  DEFAULT   26 
    27: 00000000     0 SECTION LOCAL  DEFAULT   27 
    28: 00000000     0 SECTION LOCAL  DEFAULT   28 
    29: 00000000     0 SECTION LOCAL  DEFAULT   29 
    30: 00000000     0 SECTION LOCAL  DEFAULT   30 
    31: 00000000     0 SECTION LOCAL  DEFAULT   31 
    32: 00000000     0 SECTION LOCAL  DEFAULT   32 
    33: 00000000     0 FILE    LOCAL  DEFAULT  ABS /scratch/maciej/arm-linux
    34: 00008148     0 NOTYPE  LOCAL  DEFAULT    2 $d
    35: 00000000     0 FILE    LOCAL  DEFAULT  ABS /scratch/maciej/arm-linux
    36: 000083e0     0 NOTYPE  LOCAL  DEFAULT   12 $a
    37: 000085f4     0 NOTYPE  LOCAL  DEFAULT   16 $d
    38: 00008410     0 NOTYPE  LOCAL  DEFAULT   12 $d
    39: 00000000     0 FILE    LOCAL  DEFAULT  ABS init.c
    40: 000085b4     0 NOTYPE  LOCAL  DEFAULT   14 $d
    41: 0001075c     0 NOTYPE  LOCAL  DEFAULT   23 $d
    42: 00000000     0 FILE    LOCAL  DEFAULT  ABS /home/test/smbShare/nuc97
    43: 0000841c     0 NOTYPE  LOCAL  DEFAULT   12 $a
    44: 0000841c     0 FUNC    LOCAL  DEFAULT   12 call_weak_fn
    45: 00008438     0 NOTYPE  LOCAL  DEFAULT   12 $d
    46: 00008390     0 NOTYPE  LOCAL  DEFAULT   10 $a
    47: 000085ac     0 NOTYPE  LOCAL  DEFAULT   13 $a
    48: 00000000     0 FILE    LOCAL  DEFAULT  ABS /home/test/smbShare/nuc97
    49: 00008398     0 NOTYPE  LOCAL  DEFAULT   10 $a
    50: 000085b0     0 NOTYPE  LOCAL  DEFAULT   13 $a
    51: 00000000     0 FILE    LOCAL  DEFAULT  ABS crtstuff.c
    52: 00010648     0 OBJECT  LOCAL  DEFAULT   20 __JCR_LIST__
    53: 00008440     0 NOTYPE  LOCAL  DEFAULT   12 $a
    54: 00008440     0 FUNC    LOCAL  DEFAULT   12 deregister_tm_clones
    55: 0000846c     0 NOTYPE  LOCAL  DEFAULT   12 $d
    56: 000085c4     0 NOTYPE  LOCAL  DEFAULT   15 $d
    57: 000085fc     0 NOTYPE  LOCAL  DEFAULT   16 $d
    58: 00008478     0 NOTYPE  LOCAL  DEFAULT   12 $a
    59: 00008478     0 FUNC    LOCAL  DEFAULT   12 register_tm_clones
    60: 000084ac     0 NOTYPE  LOCAL  DEFAULT   12 $d
    61: 00010760     0 NOTYPE  LOCAL  DEFAULT   23 $d
    62: 000084b8     0 NOTYPE  LOCAL  DEFAULT   12 $a
    63: 000084b8     0 FUNC    LOCAL  DEFAULT   12 __do_global_dtors_aux
    64: 000084dc     0 NOTYPE  LOCAL  DEFAULT   12 $d
    65: 00010764     1 OBJECT  LOCAL  DEFAULT   24 completed.8879
    66: 00010644     0 NOTYPE  LOCAL  DEFAULT   19 $d
    67: 00010644     0 OBJECT  LOCAL  DEFAULT   19 __do_global_dtors_aux_fin
    68: 000084e0     0 NOTYPE  LOCAL  DEFAULT   12 $a
    69: 000084e0     0 FUNC    LOCAL  DEFAULT   12 frame_dummy
    70: 0000850c     0 NOTYPE  LOCAL  DEFAULT   12 $d
    71: 00010640     0 NOTYPE  LOCAL  DEFAULT   18 $d
    72: 00010640     0 OBJECT  LOCAL  DEFAULT   18 __frame_dummy_init_array_
    73: 00010764     0 NOTYPE  LOCAL  DEFAULT   24 $d
    74: 00000000     0 FILE    LOCAL  DEFAULT  ABS helloworld.c
    75: 000085b8     0 NOTYPE  LOCAL  DEFAULT   14 $d
    76: 00008514     0 NOTYPE  LOCAL  DEFAULT   12 $a
    77: 00008540     0 NOTYPE  LOCAL  DEFAULT   12 $d
    78: 000085e8     0 NOTYPE  LOCAL  DEFAULT   15 $d
    79: 0000861c     0 NOTYPE  LOCAL  DEFAULT   16 $d
    80: 00000010     0 NOTYPE  LOCAL  DEFAULT   31 $d
    81: 00000000     0 FILE    LOCAL  DEFAULT  ABS elf-init.c
    82: 00008544     0 NOTYPE  LOCAL  DEFAULT   12 $a
    83: 000085a0     0 NOTYPE  LOCAL  DEFAULT   12 $d
    84: 00008624     0 NOTYPE  LOCAL  DEFAULT   16 $d
    85: 000085a8     0 NOTYPE  LOCAL  DEFAULT   12 $a
    86: 0000003c     0 NOTYPE  LOCAL  DEFAULT   31 $d
    87: 00000000     0 FILE    LOCAL  DEFAULT  ABS crtstuff.c
    88: 0000863c     0 NOTYPE  LOCAL  DEFAULT   17 $d
    89: 0000863c     0 OBJECT  LOCAL  DEFAULT   17 __FRAME_END__
    90: 00010648     0 NOTYPE  LOCAL  DEFAULT   20 $d
    91: 00010648     0 OBJECT  LOCAL  DEFAULT   20 __JCR_END__
    92: 00000000     0 FILE    LOCAL  DEFAULT  ABS 
    93: 00010644     0 NOTYPE  LOCAL  DEFAULT   18 __init_array_end
    94: 0001064c     0 OBJECT  LOCAL  DEFAULT   21 _DYNAMIC
    95: 00010640     0 NOTYPE  LOCAL  DEFAULT   18 __init_array_start
    96: 0001073c     0 OBJECT  LOCAL  DEFAULT   22 _GLOBAL_OFFSET_TABLE_
    97: 0000839c     0 NOTYPE  LOCAL  DEFAULT   11 $a
    98: 000083ac     0 NOTYPE  LOCAL  DEFAULT   11 $d
    99: 000083b0     0 NOTYPE  LOCAL  DEFAULT   11 $a
   100: 00000000     0 FUNC    GLOBAL DEFAULT  UND __aeabi_unwind_cpp_pr0@@G
   101: 000085a8     4 FUNC    GLOBAL DEFAULT   12 __libc_csu_fini
   102: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_deregisterTMCloneTab
   103: 0001075c     0 NOTYPE  WEAK   DEFAULT   23 data_start
   104: 00010764     0 NOTYPE  GLOBAL DEFAULT   24 __bss_start__
   105: 00010768     0 NOTYPE  GLOBAL DEFAULT   24 _bss_end__
   106: 00010764     0 NOTYPE  GLOBAL DEFAULT   23 _edata
   107: 000085ac     0 FUNC    GLOBAL DEFAULT   13 _fini
   108: 00010768     0 NOTYPE  GLOBAL DEFAULT   24 __bss_end__
   109: 0001075c     0 NOTYPE  GLOBAL DEFAULT   23 __data_start
   110: 000083b0     0 FUNC    GLOBAL DEFAULT  UND puts@@GLIBC_2.4
   111: 000083bc     0 FUNC    GLOBAL DEFAULT  UND __libc_start_main@@GLIBC_
   112: 00000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__
   113: 00010760     0 OBJECT  GLOBAL HIDDEN    23 __dso_handle
   114: 000085b4     4 OBJECT  GLOBAL DEFAULT   14 _IO_stdin_used
   115: 00008544   100 FUNC    GLOBAL DEFAULT   12 __libc_csu_init
   116: 00000000     0 FUNC    GLOBAL DEFAULT  UND __aeabi_unwind_cpp_pr1@@G
   117: 00010768     0 NOTYPE  GLOBAL DEFAULT   24 _end
   118: 000083e0     0 FUNC    GLOBAL DEFAULT   12 _start
   119: 00010768     0 NOTYPE  GLOBAL DEFAULT   24 __end__
   120: 00010764     0 NOTYPE  GLOBAL DEFAULT   24 __bss_start
   121: 00008514    48 FUNC    GLOBAL DEFAULT   12 main
   122: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _Jv_RegisterClasses
   123: 00010764     0 OBJECT  GLOBAL HIDDEN    23 __TMC_END__
   124: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_registerTMCloneTable
   125: 000083d4     0 FUNC    GLOBAL DEFAULT  UND abort@@GLIBC_2.4
   126: 00008390     0 FUNC    GLOBAL DEFAULT   10 _init

Histogram for bucket list length (total of 3 buckets):
 Length  Number     % of total  Coverage
      0  0          (  0.0%)
      1  0          (  0.0%)      0.0%
      2  2          ( 66.7%)     44.4%
      3  0          (  0.0%)     44.4%
      4  0          (  0.0%)     44.4%
      5  1          ( 33.3%)    100.0%

Version symbols section '.gnu.version' contains 10 entries:
 地址: 0000000000008314  Offset: 0x000314  Link: 4 (.dynsym)
  000:   0 (*本地*)       2 (GCC_3.5)       0 (*本地*)       3 (GLIBC_2.4)  
  004:   3 (GLIBC_2.4)     0 (*本地*)       2 (GCC_3.5)       0 (*本地*)    
  008:   0 (*本地*)       3 (GLIBC_2.4)  

Version needs section '.gnu.version_r' contains 2 entries:
 地址:0x0000000000008328  Offset: 0x000328  Link: 5 (.dynstr)
  000000: Version: 1  文件:libc.so.6  计数:1
  0x0010:   Name: GLIBC_2.4  标志:无  版本:3
  0x0020: Version: 1  文件:libgcc_s.so.1  计数:1
  0x0030:   Name: GCC_3.5  标志:无  版本:2

Displaying notes found at file offset 0x00000148 with length 0x00000020:
  Owner                 Data size	Description
  GNU                  0x00000010	NT_GNU_ABI_TAG (ABI version tag)
    OS: Linux, ABI: 2.6.16
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "5TE"
  Tag_CPU_arch: v5TE
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_rounding: Needed
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int

7.strace调试程序

gcc -v -g -Wall helloworld.c -o helloworld
strace ./helloworld
execve("./helloworld", ["./helloworld"], [/* 23 vars */]) = 0
brk(0)                                  = 0x830c000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76f3000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=98991, ...}) = 0
mmap2(NULL, 98991, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb76da000
 close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\233\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1758972, ...}) = 0
mmap2(NULL, 1763964, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb752b000
mmap2(0xb76d4000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a9000) = 0xb76d4000
mmap2(0xb76d7000, 10876, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb76d7000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb752a000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb752a940, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb76d4000, 8192, PROT_READ)   = 0
mprotect(0x8049000, 4096, PROT_READ)    = 0
mprotect(0xb7716000, 4096, PROT_READ)   = 0
munmap(0xb76da000, 98991)               = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 23), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76f2000
write(1, "hello world\n", 12hello world
)           = 12
exit_group(0)                           = ?
+++ exited with 0 +++

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值