用GCC输出带源代码的汇编程序进行链接的调试

通过分析GCC编译过程中的链接错误,例如`undefined reference`,理解大型工程中链接阶段的重要性。当遇到未定义的函数引用,如`test1`,除了直接修改代码,还可以使用GCC的特殊选项生成带源代码的汇编文件,并利用`objdump`工具查看详细信息,以定位错误发生的具体位置。
摘要由CSDN通过智能技术生成

引用请注明出处:http://blog.csdn.net/int64ago/article/details/7395418

一个可执行程序的形成,大致的步骤:编译——>链接——>可执行文件,然而,犯错最多的地方可能你以为是编译阶段,但是,实际上是链接阶段,特别是大型工程。下面用一个例子简单说下出现链接错误的一个简单解决方式,先看两个程序:

//main.c
void test1();
void test2();

int main()
{
	test1();
	test2();
	return 0;
}

//test.c
#include <stdio.h>

static void test1()
{
	printf("This is test1\n");
}

void test2()
{
	printf("This is test2\n");
	test1();
}

这两个简单的程序也没干啥,就是用来测试的,先编译:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值