更改LIBS的PATH

时间:2016-08-06 22:23:06

标签: c 64-bit cross-compiling linker-errors libs

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

我认为这个错误是由于在一个错误的位置将sh和其他可执行文件链接到库的dropbear引起的。

该设备有两个libc ++

位置
  #1 /system/lib/libc++.so
  #2 /system/lib64/libc++.so

如何判断/强制已编译的二进制文件使用

中的lib
/sytem/lib64

如果举一个例子,请告诉我确切需要添加的内容,以便我能正确应用这些信息。我几乎可以肯定修复很简单,但我不是程序员。当我绝望时,我会这样做。

1 个答案:

答案 0 :(得分:0)

原来在srv-chansession.c中有一个需要修改的硬链接

自:

addnewvar("LD_LIBRARY_PATH", "/system/lib");

要:

addnewvar("LD_LIBRARY_PATH", "/system/lib64");

实际上可能更好的方法是注释掉那一行并让机器人连接器来处理它。

现在我在我的64位Android设备上运行了一个有效的dropbear ssh服务器。