有没有办法让 gcc 输出原始二进制文件?

2024-03-22

是否有一组命令行选项可以说服 gcc 从独立的源文件生成平面二进制文件?例如,假设 foo.c 的内容是

static int f(int x)
{
  int y = x*x;
  return y+2;
}

没有外部引用,没有任何内容可以导出到链接器。我想要一个小文件,其中仅包含此功能的机器指令,没有任何其他装饰。有点像 (DOS) .COM 文件,但 32 位保护模式除外。


试试这个:

$ gcc -c test.c     
$ objcopy -O binary -j .text test.o binfile

您可以确保它是正确的objdump:

$ objdump -d test.o 
test.o:     file format pe-i386


Disassembly of section .text:

00000000 <_f>:
   0:   55                      push   %ebp
   1:   89 e5                   mov    %esp,%ebp
   3:   83 ec 04                sub    $0x4,%esp
   6:   8b 45 08                mov    0x8(%ebp),%eax
   9:   0f af 45 08             imul   0x8(%ebp),%eax
   d:   89 45 fc                mov    %eax,-0x4(%ebp)
  10:   8b 45 fc                mov    -0x4(%ebp),%eax
  13:   83 c0 02                add    $0x2,%eax
  16:   c9                      leave  
  17:   c3                      ret  

并将其与二进制文件进行比较:

$ hexdump -C binfile 
00000000  55 89 e5 83 ec 04 8b 45  08 0f af 45 08 89 45 fc  |U......E...E..E.|
00000010  8b 45 fc 83 c0 02 c9 c3                           |.E......|
00000018
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法让 gcc 输出原始二进制文件? 的相关文章

  • GCC:数组类型具有不完整的元素类型

    我已经宣布了struct 我尝试传递这些结构的数组 以及double双精度数组和一个整数 到一个函数中 我得到一个 数组类型具有不完整的元素类型 当我编译它时来自 gcc 的消息 我在通过考试的过程中犯了什么错误struct到函数 type
  • 命令行显示文件的属性?

    我想编写一个显示默认 Windows 属性表的应用程序 我找不到太多关于以正常编程方式执行此操作的信息 所以我想也许可以使用命令行调用 有谁知道 Windows 命令行调用文件的属性 详细信息窗口吗 没有任何运气去寻找它 这个窗口在这里 看
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • 我应该使用哪个 Linux 发行版作为 Xen 主机? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我为家庭办公室订购了一台服务器 我想用 Xen 对其进行分区 我认为这将使事情保持干净并且更容易维护 我将运行 MySQL PostgreSQL
  • ProcessBuilder 未正确执行 Java 类文件

    在一个java文件中 我调用命令行语句来执行另一个java文件 这就是我正在做的 List
  • Linux、ARM:为什么仅当启动时存在 I2C GPIO 扩展器时才创建 gpiochip

    在 imx6sx 硬件平台 NXP 嵌入式 ARM 上使用 Linux 3 14 52 问题是设备树中指定的 PCF8575 I2C GPIO 扩展器不会实例化为 sys class gpio 结构中的设备 除非它们在内核启动期间存在 这些
  • Gcc 4.2 版本缺失

    在我的带有 osx lion 和 XCode 4 1 的新 macbook pro 上 我遇到了一些 gcc 问题 In usr bin我找不到gcc 4 2 我只有以下版本 i686 apple darwin11 llvm gcc 4 2
  • Linux内核页表更新

    在linux x86 中分页 每个进程都有它自己的页面目录 页表遍历从 CR3 指向的页目录开始 每个进程共享内核页目录内容 假设三个句子是正确的 假设某个进程进入内核 模式并更新他的内核页目录内容 地址映射 访问 权利等 问题 由于内核地
  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B
  • 如何确保 numpy BLAS 库可用作动态加载库?

    The theano安装文档 http www deeplearning net software theano install html troubleshooting make sure you have a blas library指
  • 如何在不登录主机的情况下从IP查找主机名

    我需要找到一个 UNIX 主机的主机名 该主机的 IP 是已知的 而无需登录到该 UNIX 主机 Use nslookup http en wikipedia org wiki Nslookup nslookup 208 77 188 16
  • 如何从linux命令行运行.exe可执行文件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Windows 中有一个 abc exe 可执行文件 我可以使用 DOS 命令提示来执行此应用程序 并为其提供一些运行时变量 我想从
  • 操作系统什么时候清除进程的内存

    进程在某些操作系统上成功或异常终止 操作系统何时决定擦除分配给该进程的内存 数据 代码等 在退出时或当它想为新进程分配内存时 这个清除内存分配过程在所有操作系统 winXP Win7 linux Mac 上都相同吗 据我了解 页表具有该进程
  • 如何获取 linux 实用程序 tail 的源代码?

    这个命令确实非常有用 但是我可以在哪里获取源代码以查看内部发生的情况 thanks tail 实用程序是 Linux 上 coreutils 的一部分 源压缩包 ftp ftp gnu org gnu coreutils coreutils
  • 如何在我的 AWS EC2 实例上安装特定字体?

    我有一个在 AWS EC2 Amazon Linux Elastic Beanstalk 实例上运行的 Python 应用程序 该实例需要某些特定字体才能生成输出 并且想知道如何在部署或实例启动过程中安装它们 我的代码在本地计算机 OS X
  • InstaPy:“错误,无法确定 64 位 Linux 的正确文件名”

    有人知道如何解决或解决这个问题吗 来自控制台的堆栈跟踪 执行后报告错误 InstaPy Version 0 6 9 Workspace in use home zanettra InstaPy Error unable to determi
  • 构建 makefile 依赖/继承树

    如果我解释得不好或者问了一些明显的问题 我很抱歉 但我是 Linux 内核的新手 而且有点深入 我们有一个嵌入式 Linux 系统 它附带一个 文档非常糟糕的 SDK 其中包含数百个文件夹stuff 大多数文件夹包含rules make m
  • 停止服务时单元陷入故障状态(状态=143)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是我的问题 我有 CentOS 和 java 进程在上面运行 Java进程是通过启动 停止脚本来操作的 它也创建了 java 实例的 p
  • 为什么 GCC 交叉编译不构建“crti.o”?

    在尝试为arm构建gcc 4 x x交叉编译器时 我陷入了缺失的困境crti o文件在 BUILD DIR gcc子目录 An strace在顶层Makefile表明编译后的xgcc正在调用交联器ld with crti o 作为一个论点
  • 为什么在 Linux 上字符串文字的内存地址与其他字符串文字的内存地址如此不同?

    我注意到字符串文字在内存中的地址与其他常量和变量 Linux 操作系统 非常不同 它们有许多前导零 未打印 Example const char h Hi int i 1 printf p n void h printf p n void

随机推荐

  • Postgresql ON sqlalchemy 中的冲突

    我读过很多资源 ao 1 https bitbucket org zzzeek sqlalchemy issues 3529 support postgres 95 on conflict upserts 2 https stackover
  • 在闪亮的主面板中右对齐元素

    我有一个闪亮的应用程序 左侧有一个侧边栏 我想将 mainPanel 中的绘图向右对齐 我尝试过添加style align right mainPanel 中的每个元素 以及包装我能想到的所有内容div style align right
  • 适用于嵌入式设备的良好串行通信协议/堆栈? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在为各种项目编写了几个不同的自定义串行协议后 我开始对每次重新发明轮子感到沮丧 我一直在寻找更通用的解
  • Powershell Invoke-Sqlcmd 登录失败

    我正在尝试从 Windows SQL Server 2008 R2 的 powershell 运行 sql 查询 代码似乎无法通过 SQL Server 身份验证凭据来正确运行 sqlcmd 我直接从 powershell 运行第一部分 而
  • ExtJS AJAX 另存为对话框

    我发出 ExtJS AJAX 请求 并且希望向用户显示标准浏览器 另存为 对话框 要下载的文件可以是 pdf jpg 或 png 文件 目前 AJAX 请求已成功提交 但由于它是异步的 因此不会出现对话框 我可以简单地不使用 AJAX 但是
  • udp数据包被tcpdump捕获,但没有被套接字接收[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我编写了一个 rawudp 程序 通过原始套接字发送 udp 数据包 按照网页http www tenouk com Module43a html h
  • 使用 Zend Framework 渲染站点范围元素的最佳方法

    我正在使用 模块 前端控制器资源进行项目设置 渲染站点范围元素 例如导航 的最佳方法是什么 Add the action which renders the element to the end of the action stack ea
  • 无法从 virtualenv 导入包

    我的项目中有一个一行脚本 它导入一个包 flask mail 我在 virtualenv 中运行它 如果我执行python script py I get ImportError No module named flask mail 如果在
  • 无法将映像推送到配置为代理缓存的 docker 注册表

    我跟着this http blog docker com 2015 10 registry proxy cache docker open source 设置 Docker v2 注册表作为 Docker Hub 映像的本地代理缓存的指南
  • git中的用户访问控制

    我有一个简单的问题 我们使用 Bitbucket 作为 git 提供者 假设我是一个开发团队的经理 我希望自己成为唯一可以将代码合并到 master 分支的人 其他团队成员可以签出主分支并创建新分支 但他们无法将代码合并到主分支 我怎样才能
  • 将 pandas 数据框转换为列表

    我有一个熊猫数据框 apple banana carrot diet coke 1 1 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 1 1 0 我想将其转换为以下内容 apple banana carrot
  • 如何重置 iOS 9 通用链接设置?

    在我的 iOS 9 应用程序上测试通用链接时 我不小心点击了 mywebsite com gt 右上角 这使得应用程序再次导航到网站 现在我似乎无法再次使通用链接起作用 似乎 iOS 已经记住了我的偏好 即我希望看到在 Safari 而不是
  • SQL Server 中的 DateTime2 与 DateTime

    哪一个 datetime https msdn microsoft com en us library ms187819 aspx datetime2 https msdn microsoft com en us library bb677
  • 撰写:LazyColumn 在单个项目更新时重组所有项目

    我正在尝试使用 LazyColumn 在列表中显示订单列表 这是代码 Composable private fun MyOrders orders List
  • 龙卷风 vs wsgi(带gunicorn)

    I read this http rz scale it pl 2013 01 25 tornado the best web framework html关于龙卷风 另一方面 如果您已经有 WSGI 应用程序并且想要运行它 在速度极快的t
  • 处理 iOS 10 中的 AutoLayout 约束动画差异?

    我注意到在 iOS 10 Beta 5 即将尝试 Beta 6 中 AutoLayout 约束动画的行为有点不同 例如 此方法的工作方式与之前的 iOS 版本不同 view addConstraints constraints view s
  • 如何在 autoconf 配置脚本/makefile 中添加到库的链接

    我是一个自动工具新手 我很难轻松地弄清楚如何做 将特定库链接到配置的目标之一 我有一个源包 我想用通常的方式构建 configure make make install 不幸的是 其中一个 cpp 缺少对另一个库的引用 手动编译它 调整命令
  • Spray 如何找到资源 - 例如javascript

    使用 Spray io 构建我的第一个 Servlet 非常简单 但从未找到标头中引用的资源 头 gt 这些资源必须放在哪个目录中 或者如何引导喷雾去那里查找 简单的问题 但我无法弄清楚 非常感谢 Girgl 对于 Spray 路由 我使用
  • 是否可以解构 ValueTuple 参数?

    是否可以解构一个不是从方法返回但作为输出参数的元组 我不确定我是否正确表达了自己的意思 甚至不确定是否使用了正确的术语 所以这里有一些例子 void OutMethod out int aNumber string someText out
  • 有没有办法让 gcc 输出原始二进制文件?

    是否有一组命令行选项可以说服 gcc 从独立的源文件生成平面二进制文件 例如 假设 foo c 的内容是 static int f int x int y x x return y 2 没有外部引用 没有任何内容可以导出到链接器 我想要一个