我已经阅读了几个Q&在这里,关于OpenSSL尝试不同的指令来测试cpu是否支持它们,这会导致SIGILL。但是这些答案通常表明OP在gdb下运行应用程序,但我不是。因此,每当我调用OpenSSL库时,OpenWrt MIPS路由器上的应用程序在使用OpenSSL时实际上都会崩溃。崩溃是illegal instruction
。我实际上没有回溯,虽然我的应用程序是一个调试版本。它在Ubuntu和MacOS上运行良好。
我确保我的可执行文件和ssl库都具有相同的cpu架构。
cat /proc/cpuinfo
的结果:
system type : Atheros AR9330 rev 1
machine : 8devices Carambola2 board
processor : 0
cpu model : MIPS 24Kc V7.4
BogoMIPS : 265.42
wait instruction : yes
microsecond timers : yes
tlb_entries : 16
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
令我担心的是,工具链toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11
提到了34kc的名字。我想知道是否可以使用这个工具链构建24 Kc cpu。虽然除了openssl之外的其他一切都可以正常工作。
那么请你回答我有哪些方法来解决它?
答案 0 :(得分:0)
我不知道问题是什么,但应用程序没有使用工具链中提供的openssl库并复制到目标板。当libopenssl
从官方carambola2 repos通过opkg
安装时,问题就消失了。所以它一定是不相容的。