我已经为 mips64_Cavium 平台交叉编译了 openssh-8.4p1,同时与 openssl-1.1.1h 和 zlib_v1.2.11 动态链接。这里的问题是,这样创建的二进制文件在我尝试运行时立即获得以下 SigSEGV:
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x575749a0} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault
使用LD_DEBUG=files调试加载时崩溃日志如下:
31232:
31232: file=libc.so.6 [0]; needed by /mnt/cf/sshd_dyn [0]
31232: file=libc.so.6 [0]; generating link map
31232: dynamic: 0x2b3091b0 base: 0x2b309000 size: 0x00164c00
31232: entry: 0x2b31fb58 phdr: 0x2b309034 phnum: 11
31232:
Segmentation fault (core dumped)
... 并且使用 LD_DEBUG=symbols 崩溃日志如下:
31271: symbol=islower; lookup in file=/lib32/octeon2/libpthread.so.0 [0]
31271: symbol=islower; lookup in file=/mnt/cf/libc.so.6 [0]
31271: symbol=EVP_aes_256_ctr; lookup in file=/mnt/cf/sshd_dyn [0]
31271: symbol=EVP_aes_256_ctr; lookup in file=/lib32/octeon2/libresolv.so.2 [0]
31271: symbol=EVP_aes_256_ctr; lookup in file=/mnt/cf/libcrypto.so.1.1 [0]
Segmentation fault (core dumped)
我不知道为什么会发生崩溃。
注意 zlib的编译是用
完成的CFLAGS="-mabi=n32 -fPIC"
openssl 配置的地方
CFLAGS="-mabi=n32" ./Configure no-hw linux-generic64 shared
OpenSSH8.4 配置了
CC="mips64-octeon-linux-gnu-gcc" --with-cflags="-mabi=n32" --with-ldflags="-mabi=n32 -pthread"