erlang - 尝试为ARM交叉编译Erlang R13B04时失败

标签 erlang arm cross-compiling

我正在尝试交叉编译Erlang并遇到一个奇怪的错误。使用的命令是

make clean

./otp_build configure --host=arm-none-linux-gnueabi --build=i686-pc-linux-gnu 
--prefix=/opt/erlang erl_xcomp_sysroot=~/sbctools/arm-2007q3 --disable-hipe 
--disable-threads --disable-smp --disable-megaco-flex-scanner-lineno 
--disable-megaco-reentrant-flex-scanner --disable-dynamic-ssl-lib 
--without-termcap --without-javac --without-ssl

./otp_build boot

可以在http://gist.github.com/576199看到它们的输出(太大了,无法在此处粘贴),但是结束该过程的错误是
/home/aromanov/sbctools/arm-2007q3/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: /home/aromanov/otp_src/erts/emulator/zlib/obj/arm-none-linux-gnueabi/opt/libz.a(adler32.o): Relocations in generic ELF (EM: 3)
/home/aromanov/sbctools/arm-2007q3/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: /home/aromanov/otp_src/erts/emulator/zlib/obj/arm-none-linux-gnueabi/opt/libz.a(adler32.o): Relocations in generic ELF (EM: 3)
/home/aromanov/sbctools/arm-2007q3/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: /home/aromanov/otp_src/erts/emulator/zlib/obj/arm-none-linux-gnueabi/opt/libz.a(adler32.o): Relocations in generic ELF (EM: 3)
/home/aromanov/sbctools/arm-2007q3/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: /home/aromanov/otp_src/erts/emulator/zlib/obj/arm-none-linux-gnueabi/opt/libz.a(adler32.o): Relocations in generic ELF (EM: 3)
/home/aromanov/sbctools/arm-2007q3/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: /home/aromanov/otp_src/erts/emulator/zlib/obj/arm-none-linux-gnueabi/opt/libz.a(adler32.o): Relocations in generic ELF (EM: 3)
/home/aromanov/otp_src/erts/emulator/zlib/obj/arm-none-linux-gnueabi/opt/libz.a: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[3]: *** [/home/aromanov/otp_src/bin/arm-none-linux-gnueabi/beam] Error 1
make[3]: Leaving directory `/home/aromanov/otp_src/erts/emulator'
make[2]: *** [opt] Error 2
make[2]: Leaving directory `/home/aromanov/otp_src/erts/emulator'
make[1]: *** [opt] Error 2
make[1]: Leaving directory `/home/aromanov/otp_src/erts'
make: *** [emulator] Error 2

确实,查看~/otp_src/erts/emulator/zlib/obj/arm-none-linux-gnueabi/opt/libz.a显示它是为Intel 30386编译的。但是为什么呢?我该如何避免呢?

编辑:~/sbctools/arm-2007q3/binPATH中的第一个目录。我可能还需要添加其他工具链目录吗?

最佳答案

make[4]: Entering directory /home/aromanov/otp_src/erts/emulator/zlib'
make -f arm-none-linux-gnueabi/Makefile TYPE=opt
make[5]: Entering directory/home/aromanov/otp_src/erts/emulator/zlib'
make[5]: Nothing to be done for all'.
make[5]: Leaving directory/home/aromanov/otp_src/erts/emulator/zlib'
make[4]: Leaving directory `/home/aromanov/otp_src/erts/emulator/zlib'

好像您已经在未正确配置zlib part之前构建过……。
尝试make cleanmake distclean,然后重新编译。

关于erlang - 尝试为ARM交叉编译Erlang R13B04时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3695560/

相关文章:

gcc - 构建 GCC 交叉编译器时,Binutils 无法构建

c++ - Linux 上的编译器 (GCC) 交叉编译(到 Windows)——如何在非源目录中构建它?

erlang - 区别 ok 和 end [Erlang]

c - arm_math 矩阵乘法硬故障

erlang - 在 Yaws 网络服务器上上传进度

linux - GICD_ISENABLER 和 GICD_ICENABER 禁用中断的区别

ios - 为基于 ARM 的设备优化 C 代码

c++ - 简单的内核编译问题

javascript - JavaScript中有多人棋盘游戏的框架吗?

erlang - 无法在 erlang R17 RC1 中启动 appmon