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

Ham*_*lne 2 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'
Run Code Online (Sandbox Code Playgroud)

对于其他文件的加载也是如此.我试过了:

  • -fno-stack-protector,-fstack-protector,-fstack-protector-all:无效
  • -lssp:找不到该文件.我的系统上没有名为'libssp'的文件
  • 寻找libssp的源代码,以便我自己编译并手动链接到它,找不到它

有任何想法吗?

Quu*_*one 5

发布一个答案,将这个问题从"未答复"清单中删除......

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

./Configure -Accflags="-fno-stack-protector"
Run Code Online (Sandbox Code Playgroud)

然后重建.重要的一点是,你必须编译每个源文件,-fno-stack-protector以摆脱对它的调用__stack_chk_guard.-fno-stack-protector链接阶段手动传递并没有做任何有用的事情.