Re: [問題]gnu gcc segmation fault
"-e main" 會讓loader直接call你的main()
在執行main()的最後一行ret instruction時,stack上的caller addr恐怕不是有效的
這應該是seg fault的原因,你可以用gdb單步執行試試
由於這個binary沒有link _start(),你的main()在執行時沒有c runtime environment
這使得main()的input parameter是無效的,而return value也無意義
※ 引述《stevenlin08 (stevens)》之銘言:
: 大家好,
: 以gcc -c + ld
: 是為了想一步步地了解其linker'loader'libary
: 而想要了解在下gcc 時它的default make file內容.
: 目前,是先用
: 0.
: 使用gcc -v main.c,來看其相關的
: 1.
: $gcc -c main.c -o main.o
: 2.
: $ld main.o -e main -lc -m elf_i386 -I /lib/ld-linux.so.2
: (-lc 為printf的libary, ld-linux.so.2則為在loader時需需需的lib)
: 3.雖然,可以成功的linker了.
: 但在其程序行時,卻又出現了segmation fault.
: 因為其在gcc -v中有太多的設定.
: 不知有那些必要的.或是該如何來修正其錯誤.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.93.253
推
05/07 22:34, , 1F
05/07 22:34, 1F
→
05/16 13:17, , 2F
05/16 13:17, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章