引用请注明出处:http://blog.youkuaiyun.com/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();
}
这两个简单的程序也没干啥,就是用来测试的,先编译:
gcc -c main.c

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

被折叠的 条评论
为什么被折叠?



