-arch arch
编译指定的目标 建筑拱门。允许的 值为'i386','x86_64','ppc'和 'PPC64'。多个选项有效,并且 指导编译器生成 “通用”二进制文件,包括对象 指定每个体系结构的代码 与-arch。此选项仅适用于 汇编程序和库可用 对于指定的每个架构。 (仅限苹果)
那么这两个电话之间的区别是什么:
gcc -arch i386 program.c
和
gcc -m32 program.c
是否 -arch 更强大,因为它更灵活,并且在指定多个拱时可以生成通用二进制文件?
答案 0 :(得分:9)
我不确定,但是通过阅读手册页,我得到了与你相似的结论。
我想唯一真正的区别是-arch
可用于创建通用二进制文件。
因为这可以创建通用二进制文件
gcc -arch i386 -arch x86_64 foo.c
但实际上你无法确定下面的语义应该是什么(它们甚至可能是无效的语法)。特别是第三个应该是无效的,因为手册页说明要为32位或64位环境生成。
gcc -m32 -arch i386 -arch x86_64 foo.c
gcc -m64 -arch i386 -arch x86_64 foo.c
gcc -m32 -m64 -arch i386 -arch x86_64 foo.c
-m32 -m64 Generate code for a 32-bit or 64-bit environment. The 32-bit environment sets int, long and pointer to 32 bits and generates code that runs on any i386 system. The 64-bit environment sets int to 32 bits and long and pointer to 64 bits and generates code for AMDs x86-64 architecture. For darwin only the -m64 option turns off the -fno-pic and -mdynamic-no-pic options. -arch //already included in question