我最近一直在尝试为64位arch android设备编译dropbear。我可以编译并运行该程序,但是当我登录到服务器时,它使我开始出错。
我这样配置和编译:
cp ../config.guess ../config.sub .
./configure --build=x86_64-windows --host=arm-linux-androideabi \
--disable-zlib --disable-largefile --disable-loginfunc \
--disable-shadow --disable-utmp --disable-utmpx --disable-wtmp \
--disable-wtmpx --disable-pututline --disable-pututxline --disable-lastlog \
CFLAGS='-Os -W -Wall -fPIE' LDFLAGS='-fPIE -pie'
make dropbear
错误:
CANNOT LINK EXECUTABLE: "/system/lib/libc++.so" is 32-bit instead of 64-bit
page record for 0x7f800b8010 was not found (block_size=32)
我相信该错误是由于dropbear将sh和其他可执行文件链接到错误位置的库引起的。
该设备有两个用于libc ++的位置
#1 /system/lib/libc++.so
#2 /system/lib64/libc++.so
如何告诉/强制编译的二进制文件使用以下库中的库
/sytem/lib64
如果举个例子,请告诉我确切需要添加的内容,这样我才能正确地应用信息。我几乎可以确定修复方法很简单,但我不是程序员。我绝望时会做这些事。
最佳答案
原来srv-chansession.c中有一个硬链接需要修改
从:
addnewvar("LD_LIBRARY_PATH", "/system/lib");
至:
addnewvar("LD_LIBRARY_PATH", "/system/lib64");
注释掉该行并让android链接程序处理它可能实际上更好。
现在,我已经在我的64位android设备上工作了一个dropbear ssh服务器。
关于c - 更改LIBS的路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38809255/