在 OS X 上编译 C 程序以在 Linux 上运行

2024-03-09

我有一个非常简单的 C 程序,它仅使用标准库函数进行一些加密计算。

我将在 Ubuntu(10.04,32 位)上运行该程序,并使用带 -m32 标志的 cc 在 OS X 10.6 上编译它。当我尝试在 Ubuntu 上运行它时,收到错误消息“无法执行二进制文件”。

当我在 Ubuntu 上编译它时,它运行良好。

有没有什么简单的方法可以将 OS X 上的代码编译成可以在 Ubuntu 上运行的二进制文件?如果不是,那么导致二进制文件不兼容的差异是什么?


您需要设置交叉编译器。使用 GNU 工具链,该过程如下所示:

  1. 下载binutils http://ftp.gnu.org/gnu/binutils/, gcc http://gcc.gnu.org/mirrors.html, and glibc http://ftp.gnu.org/gnu/glibc/.
  2. 解压 bintuls(例如 binutils-x.y.z)。
  3. mkdir binutils-linux
  4. cd binutils-linux
  5. ../binutils-x.y.z/configure --target=i386-ubuntu-linux (不确定确切的目标)
  6. make
  7. 须藤进行安装
  8. cd ..
  9. 解压 gcc(类似于 gcc-x.y.z)。
  10. mkdir gcc-linux
  11. cd gcc-linux
  12. ../gcc-x.y.z/configure --target=i386-ubuntu-linux (不确定确切的目标)
  13. make
  14. 须藤进行安装
  15. cd ..
  16. 解压 glibc(例如 glibc-x.y.z)
  17. mkdir glibc-linux
  18. cd glibc-linx
  19. ../glibc-x.y.z/configure --target=i386-ubuntu-linux (不确定确切的目标)
  20. make
  21. 须藤进行安装
  22. cd ..

我从未尝试过 OSX 作为主机操作系统,所以我不知道是否有任何其他并发症,但这是一般方法。我是凭记忆工作的,所以如果您需要更多帮助,请添加评论。

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

在 OS X 上编译 C 程序以在 Linux 上运行 的相关文章

  • (简单)boost thread_group 问题

    我正在尝试编写一个相当简单的线程应用程序 但我对 boost 的线程库很陌生 我正在开发的一个简单的测试程序是 include
  • 哪些 .NET 依赖注入框架值得研究? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C++ 获取两个分隔符字符串之间的字符串

    C C 中是否有任何内置函数可以在两个分隔符字符串之间获取字符串 我的输入看起来像 STARTDELIMITER 0 192 168 1 18 STOPDELIMITER 我的输出应该是 0 192 168 1 18 提前致谢 你可以这样做
  • Arduino C++ 析构函数?

    我知道在Arduino中你不能使用delete 那么什么时候调用 C 类中定义的析构函数呢 同样 如果我想创建一个指向数组的指针 我必须使用malloc and free 当对象被销毁时 析构函数被调用 对于自动 堆栈上 变量 它在离开其作
  • ASP.NET MVC:如何在返回状态代码 404 的同时提供内容? [复制]

    这个问题在这里已经有答案了 可能的重复 如何配置 IIS 以使用自定义内容提供 404 响应 https stackoverflow com questions 2551959 how to configure iis to serve m
  • C#等待串口数据

    我试图通过 C 应用程序从指纹扫描仪获取数据 但在指纹发送之前 我的整个代码都会执行 我尝试使用延迟功能System Threading Thread Sleep 1000 因此它可以在下一步执行之前获取数据 但这一切似乎都是徒劳的 任何人
  • C# 从视频文件的一部分中提取帧

    使用 AForge ffmpeg 包装器 您可以使用 VideoFileReader 类从视频中提取帧并将其保存为位图 请参阅以下示例 提取 avi 文件的帧 https stackoverflow com questions 178256
  • 如何包装 UnityEngine.Debug.Log 但在单击时保留代码行

    我有这种代码 目的是包装UnityEngine Debug Log所以我也可以在生产中禁用它们 以便我可以稍后查找 过滤 using System public enum LogType DEBUG CRITICAL public clas
  • 如何在 Mac 上的 Sublime Text 2 上运行 C++?

    我尝试在 Mac 上的 Sublime Text 2 上用 C 运行 hello world I typed include iostream int main cout lt lt Hello WOrld return 0 但这给了我一个
  • L"" 和 u8"" 之间的区别

    以下有什么区别吗 auto s1 L 你好 auto s2 u8 你好 Are s1 and s2指的是同一类型 如果不是 有什么区别以及首选哪一个 它们不是同一类型 s2是 UTF 8 或窄字符串文字 这C 11标准草案 http www
  • 将谓词作为参数传递给Where 子句时,EF SQL 发生了变化

    EF 正在为下面列出的两个相似语句生成不同的 SQL var test dbcontext Persons GetAll Where c gt c PersonID 2 Select c gt c PersonName FirstOrDef
  • 如何结束用户会话并确保用户已注销?

    我是 aspx 的新手 现在的问题是 因为我正在做一个支持网络的项目 所以我从用户那里登录了 我拖放登录模板 然后使用 Session Authentication username Tostring 存储当前登录用户的信息等 现在我什至使
  • 为什么指向 int 的指针会转换为 void* 而指向函数的指针会转换为 bool?

    C 标准草案 N3337 对指针转换有以下规定 4 10 指针转换 2 指向的指针 类型的右值cv T 在哪里T是一个对象类型 可以转换为 指向的指针 类型的右值cv void 将 指针转换为cv T 到 指向cv void 指向类型对象的
  • Python 比 C++ 更快、更轻吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • EF Core 5.0 中的多对多关系是否可以配置为仅保留一个导航属性(在一侧)?

    我已使用以下代码配置了 DbContext EF Core 5 0 protected override void OnModelCreating ModelBuilder modelBuilder modelBuilder Entity
  • 如何编辑 .csproj 文件

    当我使用 NET Framework 4 0 MSBUILD EXE 文件编译 csproj 文件时 出现错误 在 website01 csproj 的当前上下文中找不到 lable01 实际上 我需要添加每个 ASP NET 页面及其代码
  • #region 描述编译到.net 中的.exe 中?

    region endregion 指令 描述 是否编译到 NET 中的 EXE 中 我知道注释不是 但我经常在一个区域内对代码组进行分块并给出有用的描述 我想确保这些描述在我编译的代码中不可见 我不是在寻找混淆信息 不过 谢谢 不 他们不是
  • 让 clang-tidy 修复头文件

    我正在将当前使用 gcc 编译的项目移至 clang 并有一堆 gcc 没有生成的警告 Winconsistent missing override clang tidy致力于修复这些错误 cpp文件 但是它不触及hpp文件 因为在数据库中
  • 如何在 C++ 中检查文件是否已被另一个应用程序打开?

    我知道 有is open C 中的函数 但我希望一个程序检查文件是否尚未被另一个应用程序打开 有没有办法使用标准库来做到这一点 编辑 在答案中澄清这是针对 Linux 应用程序的 不仅标准库没有这个功能 一般来说也是不可能的 你可以 在li
  • 是否可以在 Visual Studio 2010 项目中使用多个“字符集”?

    如您所知 在 Visual Studio 2010 c 中 我们有 noset unicode 和 MBCS 字符集 我们可以通过菜单或预处理器指令 如 define UNICODE 来设置它 我正在开发一个项目 它有一个使用 MBCS 字

随机推荐