在ARM上编译Perl:对'__stack_chk_guard'的未定义引用

时间:2011-06-09 10:00:25

标签: perl arm

是的,所以我在ARM设备上编译perl。它配置很好,所以我开始编译过程。完成依赖后,我得到这个输出:

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-stack-protector,-fstack-protector,-fstack-protector-all:无影响
  • -lssp:找不到该文件。我的系统上没有名为'libssp'的文件
  • 寻找libssp的源代码,以便我自己编译并手动链接到它,找不到它

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

发布一个答案,将此问题从“未答复”清单中删除......

Per @ Alex对原始问题的评论,解决方案是运行

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

然后重建。重要的是,您必须使用-fno-stack-protector 编译每个源文件,以便摆脱对__stack_chk_guard的调用。 link 阶段手动传递-fno-stack-protector并没有任何用处。