Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 尝试在64位上运行32位应用程序时出错。和sudo一起跑步很好_Linux_Ubuntu_Arm_Glibc_Arm64 - Fatal编程技术网

Linux 尝试在64位上运行32位应用程序时出错。和sudo一起跑步很好

Linux 尝试在64位上运行32位应用程序时出错。和sudo一起跑步很好,linux,ubuntu,arm,glibc,arm64,Linux,Ubuntu,Arm,Glibc,Arm64,我在32位arm机器上编译了一个简单的hello world应用程序。并将所需的32位lib复制到aarch64机器上。(ld-2.19.so和libc-2.19.so) 如果我是root用户(sudo),则运行正常,但对普通用户的权限被拒绝 这是错误- ubuntu@ubuntu:~$ ./ld-2.19.so ./hello_world ./hello_world: error while loading shared libraries: ./hello_world: failed to

我在32位arm机器上编译了一个简单的hello world应用程序。并将所需的32位lib复制到aarch64机器上。(ld-2.19.so和libc-2.19.so)

如果我是root用户(sudo),则运行正常,但对普通用户的权限被拒绝

这是错误-

ubuntu@ubuntu:~$ ./ld-2.19.so ./hello_world 
./hello_world: error while loading shared libraries: ./hello_world: failed to map segment from shared object: Operation not permitted
ubuntu@ubuntu:~$ ./ld-2.19.so --list ./hello_world 
./hello_world: error while loading shared libraries: ./hello_world: failed to map segment from shared object: Operation not permitted
这就是sudo的行为-

ubuntu@ubuntu:~$ sudo ./ld-2.19.so ./hello_world
Hello World
ubuntu@ubuntu:~$ sudo ./ld-2.19.so --list ./hello_world
linux-vdso32.so.1 =>  (0xf75cd000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xf74de000)
/lib/ld-linux-armhf.so.3 => ./ld-2.19.so (0xaae03000) 

检查这些库的文件权限。如果您不是root用户,您可能会发现您没有读取文件或目录的权限。

离题,请尝试,否则我认为这不离题。您是否检查了内核日志,或者尝试了strace?这可能有点像SE Linux权限问题,因为我猜您的64位内核相当新。或者你的libc有正确的(文件)权限标志吗?是的,我想我的libs有正确的权限-rwxr-x 1 ubuntu ubuntu 906980 Feb 6 01:04 libc-2.19.so lrwxrwxr-x 1 ubuntu ubuntu 12 Feb 6 21:19 libc.so.6->libc-2.19.so,这些库确实具有读取和执行权限。事实上,我甚至更改了整个目录-chmod-R 777/lib/arm*的权限。仍然看到相同的错误这两个链接说您需要/tmp目录上的exec perms。嗯,my/tmp具有exec权限。我认为这与此无关,请查看命令ldconfig(8)。这将检查您的库和指向共享库的链接,并确保一切正常。网上有很多帖子说要试一试。哎呀,我刚意识到你在64位机器上创建了自己的32位安装。查看命令ldd。这将显示库依赖关系树。由于您试图在64位操作系统上链接32位,因此可能需要处理许多链接。您可能需要参考32位安装,以检查是否具有64位安装所需的所有依赖项。