如何在 64 位 osx 上编译 gcc 32 位应用程序

Posted

技术标签:

【中文标题】如何在 64 位 osx 上编译 gcc 32 位应用程序【英文标题】:How to compile gcc 32bit app on 64bit osx 【发布时间】:2013-12-02 07:15:51 【问题描述】:

我尝试在我的 mac osx 64bit 上编译一个 32 位应用程序

我有一个 32 位的库。

我尝试创建一个个人库

gcc -m32 -c fileA.c -Iinclude -o fileA.o
gcc -m32 -c fileB.c -Iinclude -o fileB.o

一切正常

现在我创建 .a 文件

ar ruv ./lib/myLib.a fileA.o fileB.o

当我尝试启动时

gcc -m32 -o imageMod imageMod.c -Iinclude -Llib

我收到以下错误

架构 i386 的未定义符号:“_addozzo”,已引用 从: imageMod-nfyyGP.o ld 中的 _main:找不到体系结构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1 (使用 -v 查看调用)

谁能帮帮我?

【问题讨论】:

【参考方案1】:

你需要告诉 gcc 在库中链接:

gcc -m32 -o imageMod imageMod.c -Iinclude -Llib -l:myLib.a

【讨论】:

我尝试但现在编译器返回此错误 ld: library not found for -l:myLib.a clang: error: linker command failed with exit code 1 (use -v to see invocation)

以上是关于如何在 64 位 osx 上编译 gcc 32 位应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 64 位 RHEL 上编译 32 位应用程序?

在运行 64 位 linux 的 Armv8 (aarch64) 上编译并运行 32 位二进制文​​件

BFD_RELOC_64:使用 C++ 在 32 位 linux 上编译汇编器指令

在 32 位和 64 位上编译,但校验和不同

如何在 Windows 上编译 64 位版本的 ffmpeg?

在 64 位机器上编译 32 位:/usr/bin/ld: 找不到 -l<someLibs>