我在linux里用nasm编译成.o文件之后,用gcc连接就会报错,是否和我的linux是64位的有关?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在linux里用nasm编译成.o文件之后,用gcc连接就会报错,是否和我的linux是64位的有关?相关的知识,希望对你有一定的参考价值。

报错内容是:
i386 architecture of input file `hello.o' is incompatible with i386:x86-64 output
collect2: ld returned 1 exit status
机子是64位的,nasm是我在网上下的,没有说是多少位的。

Nasm只能是i386的,与64位不兼容。推荐学一下现代汇编(用as编译的)追问

有没有与64位机器兼容的汇编编译器呢?另外as是什么?adobe的as?

追答

as是assembly的缩写啊,与64位完美兼容。一般的能编译c的环境都有as

参考技术A 用vim或gedit吧 然后用GCC。。。。。

linux 生成的.o文件为啥带锁标志

那可能是编译源代码文件成.o时,是用root用户身份执行的gcc/g++命令,所以产生的.o文件也属于root用户。属于root用户的文件在Linux图形界面的文件管理器中,会有一个带锁的标志。 参考技术A .P关系到系统的数据结构和管道的文件

以上是关于我在linux里用nasm编译成.o文件之后,用gcc连接就会报错,是否和我的linux是64位的有关?的主要内容,如果未能解决你的问题,请参考以下文章

如何在64位的Linux系统上使用汇编和C语言混

Ubuntu 16.04使用NASM编译时用ld链接程序出现:i386 架构于输入文件 sandbox.o 与 i386:x86-64 输出不兼容(I386 architecture in the i

linux gcc编译参数有啥用?

(Linux)gcc进行优化编译的参数是啥?

linux+vs2013编译静态库和动态库

linux中把.c的文件编译成.so