【C语言】【unix c】如何将多个源文件拼接成一个可执行文件?

如何将多个源文件拼接成一个可执行文件? (在tmath文件夹下的程序下做实验)

    1、先将上面实验文件都编译成.o文件
    【nm 二进制文件名】命令可以察看二进制文件中的符号(函数的名字,全局变量的名字 ,静态局部变量的名字)

    2、先对单独的编译好的二进制文件察看链接情况:(T代表有这些函数的代码,u代表没有,只是留有位置无法执行)

    察看:t_add.o文件

        命令: tarena@ubuntu:~/day/day23/tmath$ nm t_add.o
        结果: 00000000 T t_add
              0000000e T t_sub
        分析: 由结果可以看出文件中的两个函数名显示出来,前面用T标示,表示这两个函数是有源程序的,即已实现,有程序了

    察看:主函数文件

        命令: tarena@ubuntu:~/day/day23/tmath$ nm t_math.o
        结果: 00000000 T main
                 U printf
                 U t_add
                 U t_div
                 U t_mul
                 U t_sub
        分析: 由结果可以看出在主函数的测试文件中需要的函数已经包含进来了,但是除了主函数,其他函数均处于未实现,即没有源程序只是留有位置的状态(U)

    察看:链接后的文件:

        命令: tarena@ubuntu:~/day/day23/tmath$ nm a.out 
        结果: (省略n行)
            08048404 T main
                     U printf@@GLIBC_2.0
            080483e4 T t_add
            08048504 T t_div
            080484f8 T t_mul
            080483f2 T t_sub
        分析: 由结果可以看出出来printf函数均变为了T说明各个函数的源程序均已链接成功

    知识点补充:链接分为动态链接,静态链接
            静态是在编译时就将程序载入,例如程序员编写的
            动态是在程序运行时需要用到该程序了才会载入,例如标准输出输入函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘星燎

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

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

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

打赏作者

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

抵扣说明:

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

余额充值