2011-06-09 307 views
1

對,所以我正在編譯ARM設備上的perl。它配置得很好,所以我開始編譯過程。依賴完成後,我得到這樣的輸出:在ARM上編譯Perl:對'__stack_chk_guard'的未定義引用

cc -L/lib -L/usr/lib -L/usr/local/lib -o miniperl \ 
       gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o \ 
      miniperlmain.o opmini.o perlmini.o -lnsl -ldl -lm -lcrypt -lutil -lc 
gv.o: In function `Perl_gv_stashpvn': 
gv.c:(.text+0x5794): undefined reference to `__stack_chk_fail' 
gv.c:(.text+0x5798): undefined reference to `__stack_chk_guard' 

相同的其他文件的負載,以及。我曾嘗試:

  • -fno堆棧保護器,-fstack保護器,-fstack,保護全:沒有影響
  • -lssp:無法找到該文件。不存在所謂的「libssp」我的系統
  • 正在尋找libssp的源代碼,所以我可以手動自己和鏈接編譯它的文件,無法找到它

任何想法?

+0

您可能希望爲./Configure提供更多信息,perl verion,OS和版本,標誌。 – Alex 2011-06-09 10:36:27

+0

好吧... perl 5.14.0,linux 2.6.12.6-arm1,no ./Configure flags – 2011-06-09 10:39:35

+1

你可能會運行一些運氣./Configure -Accflags =「 - fno-stack-protector」然後重建。如果沒有,我會考慮發送一個錯誤報告給p5p。 (將-fno-stack-protector添加到上面的行將不起作用,因爲它只是鏈接)。 – Alex 2011-06-09 12:25:16

回答

4

發佈的答案,讓這個問題掀起的「懸而未決」列表...

每@上原來的問題Alex的意見,解決辦法是運行

./Configure -Accflags="-fno-stack-protector" 

,然後重建。重要的是你必須編譯每個源文件與-fno-stack-protector爲了擺脫__stack_chk_guard的呼叫。在連接階段手動通過-fno-stack-protector階段沒有做任何有用的事情。

相關問題