【问题标题】:Change PATH for LIBS更改 LIBS 的路径
【发布时间】:2016-08-06 22:23:06
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    发件人:

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

    收件人:

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

    实际上最好注释掉该行并让 androids 链接器处理它。

    现在我在我的 64 位 android 设备上运行了一个可以工作的 dropbear ssh 服务器。

    【讨论】:

      猜你喜欢
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多