【C语言】【unix c】运行时文件

运行时文件:(在tmath程序下实验)
在编译过程中使用 -v :这个参数的意思是将这个编译链接的过程中产生的信息输出到显示器,可以单独显示编译或链接

命令:tarena@ubuntu:~/day/day23/tmath$ gcc *.o -v   //只显示链接的过程
结果:
*************************  这里的暂时不用看  ****************************************************
使用内建 specs。
目标:i686-linux-gnu
配置为:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.7-1ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c+ +,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
线程模型:posix
            gcc 版本 4.4.7 (Ubuntu/Linaro 4.4.7-1ubuntu2) 
COMPILER_PATH=/usr/lib/gcc/i686-linux-gnu/4.4.7/:/usr/lib/gcc/i686-linux-gnu/4.4.7/:/usr/lib/gcc/i686-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.4.7/:/usr/lib/gcc/i686-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.4.7/:/usr/lib/gcc/i686-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/i686-linux-gnu/4.4.7/:/usr/lib/gcc/i686-linux-gnu/4.4.7/:/usr/lib/gcc/i686-linux-gnu/4.4.7/../../../i386-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.4.7/../../../../lib/:/lib/i386-linux-gnu/:/lib/../lib/:/usr/lib/i386-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/i686-linux-gnu/4.4.7/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=i686'
***********************************************************************************************-L后面的是路径,.o文件这些是在链接时需要和自己编写的文件一起链接的文件)

            /usr/lib/gcc/i686-linux-gnu/4.4.7/collect2 --build-id --eh-frame-hdr -m elf_i386 --hash-style=gnu -dynamic-linker /lib/ld-linux.so.2 -z relro 
            /usr/lib/gcc/i686-linux-gnu/4.4.7/../../../i386-linux-gnu/crt1.o 
            /usr/lib/gcc/i686-linux-gnu/4.4.7/../../../i386-linux-gnu/crti.o 
            /usr/lib/gcc/i686-linux-gnu/4.4.7/crtbegin.o 
            -L/usr/lib/gcc/i686-linux-gnu/4.4.7 
            -L/usr/lib/gcc/i686-linux-gnu/4.4.7 
            -L/usr/lib/gcc/i686-linux-gnu/4.4.7/../../../i386-linux-gnu 
            -L/usr/lib/gcc/i686-linux-gnu/4.4.7/../../../../lib 
            -L/lib/i386-linux-gnu -L/lib/../lib 
            -L/usr/lib/i386-linux-gnu -L/usr/lib/../lib 
            -L/usr/lib/gcc/i686-linux-gnu/4.4.7/../../.. t_add.o t_math.o t_sul.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed 
            /usr/lib/gcc/i686-linux-gnu/4.4.7/crtend.o 
/usr/lib/gcc/i686-linux-gnu/4.4.7/../../../i386-linux-gnu/crtn.o

(上面的.o文件是一些运行时的文件,在链接的时候系统将这写.o文件和自己编的链接在一起)

tarena@ubuntu:~/day/day23/tmath$ --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs

让我们察看一个”运行时的文件“:/usr/lib/gcc/i686-linux-gnu/4.4.7/../../../i386-linux-gnu/crt1.o

命令:tarena@ubuntu:~/day/day23/tmath$ nm /usr/lib/gcc/i686-linux-gnu/4.4.7/../../../i386-linux-gnu/crt1.o


结果:
    00000000 R _IO_stdin_used
    00000000 D __data_start
             U __libc_csu_fini
             U __libc_csu_init
             U __libc_start_main
    00000000 R _fp_hw
    00000000 T _start //这里是程序的入口
    00000000 W data_start
    U main   //这里说明main在这里是一个被调用的函数,main是C程序的入口

分析:这个结果说明程序的入口并不是main,而是start,在C语言中main是入口

补充:
    _start在汇编中是一个标号,定义了程序的入口,即程序从这里开始执行
    c程序在预处理之后会进行编译为汇编,汇编后成为机器语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘星燎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值