Mat*_*ano 4 linux assembly gcc arm thumb
是否有 GCC 配置会生成仅包含 ARM32 代码的可执行文件?我知道这个-marm开关告诉编译器不产生Thumb代码,但它仅适用于用户代码的程序,而初始化程序(例如_start,frame_dummy......)还含有Thumb指令。我arm-linux-gnueabihf-在 Linux x86-64 系统上使用 Linaro 交叉编译器工具链 ( )。
编辑 :
在重新编译工具链时,我自己找到了(可能的)解决方案。编码为拇指初始化例程的glibc的一部分,可以在目标文件中找到crt1.o,crti.o并crtbegin.o。我没有尝试重新编译它,但可能有一个配置值强制将整个 libc 编码为 ARM32。
是否有 GCC 配置会生成仅包含 ARM32 代码的可执行文件?我知道
-marm开关...
您的主要问题是该代码(例如_start)不是由编译器生成的,但它已经存在预编译(作为拇指代码)。
如果您想让这些函数成为非拇指代码,则必须用您自己的文件(非拇指)“替换”现有文件(拇指)。
(您不必覆盖现有文件,但可以指示链接器在不同目录中搜索这些文件。)
如果您没有找到预先构建的非拇指文件,您将不得不自己创建它们(这可能需要大量工作)。