怎么创建网站建设,wordpress数据管理系统,公司做网站需要什么条件,商标名字大全10000个初级代码游戏的专栏介绍与文章目录-CSDN博客
我的github#xff1a;codetoys#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C的#xff0c;可以在任何平台上使用。
源码指引#xff1a;github源…初级代码游戏的专栏介绍与文章目录-CSDN博客
我的githubcodetoys所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C的可以在任何平台上使用。
源码指引github源码指引_初级代码游戏的博客-CSDN博客 一台设备是arm64的不能运行arm32程序。硬件是armV8理论上是兼容32位的。
折腾过程 比如用ldd查看so输出“not a dynamic executable”不能识别为可执行代码。用file查看则可以识别为arm EABI5动态链接库说明文件没错。 编了一个测试程序拿上去执行当然执行不了提示很奇怪用readelf命令来查看
rootubuntu:~# readelf -a a | grep SharedType: DYN (Shared object file)0x00000001 (NEEDED) Shared library: [libpthread.so.0]0x00000001 (NEEDED) Shared library: [libdl.so.2]0x00000001 (NEEDED) Shared library: [libz.so.1]0x00000001 (NEEDED) Shared library: [libm.so.6]0x00000001 (NEEDED) Shared library: [librt.so.1]0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]0x00000001 (NEEDED) Shared library: [libstdc.so.6]0x00000001 (NEEDED) Shared library: [libc.so.6]0x00000001 (NEEDED) Shared library: [ld-linux-armhf.so.3] 程序名叫“a”。 逐个搜了一下发现ld-linux-armhf.so 找不到其余应该有但是是64位。 找了另外一个交叉编译环境的ld-linux-armhf.so复制到/lib添加执行权限不然执行./a提示没有权限不是a没有权限而是这个库没有权限。 再执行./a提示 ./a: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory 这就上路了缺的这些库同样找过来不需要放在/lib只要能找到就行也不需要改权限。 把缺失的库都补上就可以了。
结论 arm分几个版本v8支持64位和32程序但是设备不一定提供了32位程序支持。 32位程序的启动器是ld-linux-armhf.so缺这个就不能启动32位程序。这个文件必须放在/lib并具有可执行权限。
关于armel和armhf 这是两种不同的fpu策略不兼容所以下载各种包的时候要注意。
检测是armel还是armhf 执行命令
readelf -A /proc/self/exe | grep Tag_ABI_VFP_args 如果返回Tag_ABI_VFP_args: VFP registers就是armhf没有返回则是armel或者根本不是arm
ubuntu下载交叉编译需要的包 用包搜索可以搜索到所有架构的包比如搜索libc
apt-cache search libc | grep arm 找所有arm的返回结果
返回结果经过了整理
libc6-arm64-cross - GNU C Library: Shared libraries (for cross-compiling)
libc6-armhf-cross - GNU C Library: Shared libraries (for cross-compiling)
libc6-armel-cross - GNU C Library: Shared libraries (for cross-compiling)
libc6-dev-arm64-cross - GNU C Library: Development Libraries and Header Files (for cross-compiling)
libc6-dev-armhf-cross - GNU C Library: Development Libraries and Header Files (for cross-compiling)
libc6-dev-armel-cross - GNU C Library: Development Libraries and Header Files (for cross-compiling)
linux-libc-dev-arm64-cross - Linux Kernel Headers for development (for cross-compiling)
linux-libc-dev-armhf-cross - Linux Kernel Headers for development (for cross-compiling)
linux-libc-dev-armel-cross - Linux Kernel Headers for development (for cross-compiling)
libc6-dbg-arm64-cross - GNU C Library: detached debugging symbols (for cross-compiling)
libc6-dbg-armel-cross - GNU C Library: detached debugging symbols (for cross-compiling)
libc6-dbg-armhf-cross - GNU C Library: detached debugging symbols (for cross-compiling)
libc6-armel-armhf-cross - Dummy package to get libc6:armel installed
libc6-armhf-armel-cross - Dummy package to get libc6:armhf installed
libc6-dev-armel-armhf-cross - Dummy package to get libc6-dev:armel installed
libc6-dev-armhf-armel-cross - Dummy package to get libc6-dev:armhf installed 很明显都分为arm64、armel、armhf三种。 安装后的目录在/usr/arm......找到需要的用就可以了。 直接指定架构的安装方法 sudo apt install libc6:armhf libstdc6:armhf 这样就会有ld-linux-armhf.so这个动态库了应该可以跑32位的程序了。 这里是文档结束