对,所以我正在 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 的源代码,以便我可以自己编译它并手动链接到它,但找不到它
有什么想法吗?
最佳答案
发布答案以将此问题从“未回答”列表中删除...
根据 @Alex 对原始问题的评论,解决方案是运行
./Configure -Accflags="-fno-stack-protector"
然后重建。重要的一点是,您必须使用 -fno-stack-protector
来编译每个源文件,以消除对 __stack_chk_guard
的调用。在链接阶段手动传递-fno-stack-protector
不会做任何有用的事情。
关于perl - 在 ARM 上编译 Perl : Undefined reference to '__stack_chk_guard' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6291082/