将 32 位和 64 位代码链接到一个二进制文件中

2024-04-10

在对此问题的评论中,内核空间 C 代码中简单指针算术的意外行为 https://stackoverflow.com/questions/49470691/unexpected-behaviour-in-simple-pointer-arithmetics-in-kernel-space-c-code, Michael Petch 写道:“64 位 ELF 格式支持 32 位代码段。”

我有一个工作程序,其中包含 32 位和 64 位代码以及它们之间的切换。我一直无法弄清楚如何将编译器生成的 32 位和 64 位代码链接在一起而不出现链接器错误,因此所有 32 位代码都是用汇编语言编写的。随着项目变得更加复杂,32位汇编代码的维护也变得更加繁重。

这是我所拥有的:

test32.cc 编译为-m32.
所有其他源文件都是在没有该标志的情况下编译的-mcmodel=kernel.

在链接描述文件中:

OUTPUT_FORMAT("elf64-x86-64")
OUTPUT_ARCH(i386:x86-64)

在生成文件中:

LD := ld
LDFLAGS := -Map $(TARGET).map -n --script $(LDSCRIPT)
$(LD) $(LDFLAGS) -b elf32-x86-64 $(OBJS64) -b elf32-i386 $(OBJS32) -o $@

我收到错误:

ld: i386 architecture of input file 'test32.o' is incompatible with i386:x86-64 output

将 OUTPUT_ARCH 更改为 i386 会导致所有 64 位目标模块出现类似错误。

我在用着:
海湾合作委员会5.4.1
GNU ld(Ubuntu 的 GNU Binutils)2.26.1


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 32 位和 64 位代码链接到一个二进制文件中 的相关文章

随机推荐

  • dreamhost 上的 SSH 密钥

    我正在尝试设置与 dreamhost 和我的本地计算机配对的 SSH 密钥 我使用 git bash 作为我的终端 使用 mingw32 我可以通过 ssh 电子邮件受保护 cdn cgi l email protection并要求我提供密
  • rspec,未知属性问题

    我正在 优秀的 railstutorial org 网站上工作 有一个关于 rspec 的基本问题 当我在新用户模型上运行以下测试时 我收到 未知属性 用户名 消息和失败的测试 before each do attr lname e gt
  • 从 IE EPM BHO 内访问命名管道服务器

    我正在尝试对我们的旧产品进行一些更改 以支持 BHO 上的 IE EPM 我已经设法加载它并调用各种方法 SetSite DocumentComplete 等 当我尝试连接到 Windows 服务中运行的命名管道服务器时 我似乎遇到了障碍
  • 如何在 Clojure 中遍历一棵树,同时收集每个节点节点的值?

    我想创建一个函数来收集二叉树中每个节点的值 在 ClojureDocs 中 我发现了几个用于遍历树 图的函数 例如 tree seq prewalk 和 postwalk https clojuredocs org clojure core
  • 为什么在 MySQL 中使用 CAST 时出现语法错误?

    我正在使用 MySQL Workbench v5 2 44 CE 我正在针对本地 MySQL 5 5 安装运行它 我正在尝试使用CAST函数 但不断出现以下错误 语法错误 意外的 INT SYM 源日期和目标日期类型是什么并不重要 唯一不给
  • Google oauth2 与 devise 和omniauth 处理为失败

    我正在尝试配置一个新的rails4 2应用程序来针对Google Oauth2进行身份验证 我似乎成功地完成了这个过程 但它被视为失败 最初的授权似乎进展顺利 直到谷歌发送回调 那么似乎就被错误地认定为失败了 给出的错误信息是 Could
  • 查找信标的两个地理位置之间的点

    假设我们有两个beacons放置在道路两侧 我们知道他们的latitude and longitude它们所在的位置 我们将它们视为一个位置 我们还知道distance两者之间以米为单位beacons 使用半正矢公式测量 我们的设备正在这两
  • 如何修复警告:视图不在窗口层次结构中

    我正在使用标准设置程序Mobclix in an iOS应用程序 我正在调用requestAndDisplayAdFromViewController 从内部开始的方法viewWillAppear void viewWillAppear B
  • 吞没的消息:错误:未捕获(承诺):[对象未定义]

    我的登录组件会短暂显示 然后被有关承诺中未定义对象的错误消息删除 这是承诺的定义 static init Promise
  • 如何在 ActiveAdmin 中使用 ActiveStorage `has_many_attached` 编辑多个附加图像

    我有一个简单的模型 可以通过附加多个图像ActiveStorage处理文件存储 我在用ActiveAdmin编辑我的模型并上传 附加图像 到目前为止没有问题 问题是 当我想编辑模型并添加新图像时 以前的图像会被删除 只添加新图像 我可以预览
  • Maven 内存不足构建失败

    截至今天 我的 Maven 编译失败 INFO ERROR Unexpected INFO java lang OutOfMemoryError Java heap space INFO at java util Arrays copyOf
  • 将 Hive 表导出到 hdfs 中的 csv

    我知道在 Hive 中将表保存到 csv 或其他文本文件 时 分隔符存在一个已知问题 所以我想知道你们是否可以帮助我解决这个问题 我有一个现有的表 表 A 我想将其以 csv 格式保存到 hdfs 通过阅读其他回复 我相信我必须首先创建一个
  • java中如何复制文件

    我正在尝试复制 java 中的文件并将其移动到新文件夹 这是我一直在使用的代码 但我总是收到此错误 访问被拒绝 在指定目录中 有没有办法解决这个问题或者有更好的方法来复制文件 谢谢 try File f1 new File fpath Fi
  • 来自 URI 的图像路径

    我正在尝试从图库中获取图像文件 Intent intent new Intent intent setType image intent setAction Intent ACTION GET CONTENT startActivityFo
  • 行范围内的替换

    I have
  • 如何使用 Spring 和 Active Directory 实现单点登录

    我有一个基于 Spring 的 Web 应用程序 我想在其上实现单点登录解决方案 基本流程是 1 用户登录 Windows 工作站 台式电脑 根据组织的 Active Directory 进行身份验证 2 用户打开浏览器并导航到 Sprin
  • Spark:如何使用动态嵌套数组转置和分解列

    我应用了问题中的算法Spark 如何转置和分解具有嵌套数组的列 https stackoverflow com questions 69418239 spark how to transpose and explode columns wi
  • 强制段落使用最大可用高度

    我有一系列的 div 其中包含一小段文本 我想让所有的 div 具有相同的高度 并根据需要改变宽度以适应段落 如果我要在垂直方向上执行此操作 我只需设置 div 的宽度 但如果我设置高度 段落就会变成一行 使框尽可能宽 如何强制段落具有高度
  • window.open() 应该在同一选项卡中打开链接

    我对 javascript 很陌生 编写了一个程序 它将打开查询字符串作为链接 我使用了 window open 但链接在新选项卡中打开 我想在同一选项卡中打开此链接 代码如下 var strquerystring if fromvalue
  • 将 32 位和 64 位代码链接到一个二进制文件中

    在对此问题的评论中 内核空间 C 代码中简单指针算术的意外行为 https stackoverflow com questions 49470691 unexpected behaviour in simple pointer arithm