我最近一直在尝试为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/

10-13 04:15