2017-08-10 91 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之前死亡。

只是程序將無法正常工作。

如果您提供的是什麼「無效」的意思,並且您自己做一些調試,那麼您可能會得到更有用的答案。