链接一个未使用的目标文件破坏程序
问题描述:
作为一个新手gcc和MCU世界,我看到一个奇怪的行为,我希望有人可以帮助我。我可以创建并没有任何问题,我armv7e米板(CC3220S_LAUNCHXL)执行一个简单的应用程序。然而,当我链接未引用的任何地方,并且不引用任何额外的代码的目标文件时,程序停止得到在板执行。没有编译或链接时间错误;只是该计划将无法正常工作。链接一个未使用的目标文件破坏程序
我的问题是如何连接未使用的对象文件会破坏程序的执行?
答
我的问题是如何连接未使用的对象文件会破坏程序的执行?
还有很多这种情况可能发生。例如:
#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
之前死亡。
只是程序将无法正常工作。
如果您提供的是什么“无效”的意思,并且您自己做一些调试,那么您可能会得到更有用的答案。