2017-08-10 56 views
0

作为一个新手gccMCU世界,我看到一个奇怪的行为,我希望有人可以帮助我。我可以创建并没有任何问题,我armv7e米板(CC3220S_LAUNCHXL)执行一个简单的应用程序。然而,当我链接未引用的任何地方,并且不引用任何额外的代码的目标文件时,程序停止得到在板执行。没有编译或链接时间错误;只是该计划将无法正常工作。链接一个未使用的目标文件破坏程序

我的问题是如何连接未使用的对象文件会破坏程序的执行?

回答

0

我的问题是如何连接未使用的对象文件会破坏程序的执行?

还有很多这种情况可能发生。例如:

#include <stdio.h> 
int main() 
{ 
    puts("Hello!"); 
    return 0; 
} 

gcc t.c && ./a.out 
Hello! 

到目前为止,一切都按预期工作。现在,对于一些破损:

// t1.c 
__attribute__((constructor)) 
void fn() { abort(); } 

gcc -w -c t1.c && gcc t.c t1.o && ./a.out 
Aborted (core dumped) 

瞧:链接到程序不再被引用的fn使其达到main之前死亡。

只是程序将无法正常工作。

如果您提供的是什么“无效”的意思,并且您自己做一些调试,那么您可能会得到更有用的答案。