覆盖动态链接器路径?

时间:2017-12-04 01:02:52

标签: linux linker qemu

我在x86_64系统上运行Linux。我在o1 = width * offset1 o2 = width * offset2 line1Ys = findYs(path1Node, o1, o2) line2Ys = findYs(path2Node, o1, o2) areaLine1.attr("x1", width*offset1) .attr("x2", width*offset1) .attr("y1", line1Ys[0]) .attr("y2", line2Ys[0]) areaLine2.attr("x1", width*offset2) .attr("x2", width*offset2) .attr("y1", line1Ys[1]) .attr("y2", line2Ys[1]) function findYs(p, x1, x2) { const accuracy = 1 //increase for quicker, but less accurate lines let ys = []; let i = x1; const l = p.getTotalLength() for (i; i < l; i+=accuracy) { let pos = p.getPointAtLength(i) if (pos.x > x1) { ys.push(pos.y) break } } for (i; i < l; i+=accuracy) { let pos = p.getPointAtLength(i) if (pos.x > x2) { ys.push(pos.y) break } } return ys; } 上安装了Raspbian图像。如果我想在/mnt下运行二进制文件,我可以/mnt进入Rasbpian环境,系统将使用chroot来运行armhf二进制文件。

我可以在qemu-arm-static环境之外运行单个二进制文件,执行以下操作:

chroot

但有没有办法覆盖动态链接器路径(在本例中为qemu-arm -E LD_LIBRARY_PATH=/mnt/lib/arm-linux-gnueabihf/ \ /mnt/lib/ld-linux-armhf.so.3 /mnt/bin/echo hello world ),以便第一个进程可以启动其他arm二进制文件?例如,启动shell可以正常工作:

/lib/ld-linux-armhf.so.3

但是尝试生成另一个二进制文件失败了:

outside$ qemu-arm -E LD_LIBRARY_PATH=/mnt/lib/arm-linux-gnueabihf/ \
  -E PATH=/mnt/bin:/mnt/usr/bin \
  /mnt/lib/ld-linux-armhf.so.3 /mnt/bin/sh
$ echo hello world
hello world

我是否可以说服内核在$ ls /lib/ld-linux-armhf.so.3: No such file or directory 中找到动态链接器(用于arm二进制文件)而无需在chroot环境中运行?

0 个答案:

没有答案