0
作爲一個新手gcc和MCU世界,我看到一個奇怪的行爲,我希望有人可以幫助我。我可以創建並沒有任何問題,我armv7e米板(CC3220S_LAUNCHXL)執行一個簡單的應用程序。然而,當我鏈接未引用的任何地方,並且不引用任何額外的代碼的目標文件時,程序停止得到在板執行。沒有編譯或鏈接時間錯誤;只是該計劃將無法正常工作。鏈接一個未使用的目標文件破壞程序
我的問題是如何連接未使用的對象文件會破壞程序的執行?
作爲一個新手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
之前死亡。
只是程序將無法正常工作。
如果您提供的是什麼「無效」的意思,並且您自己做一些調試,那麼您可能會得到更有用的答案。