#include <stdio.h>
#include <stdlib.h>
int main()
{
volatile int x;
printf("without assignment %d", x);
x = 100;
printf("%d", x);
}
gcc -c -o volatandconstvolatile volatandconstvolatile.c
我收到了volatandconstvolatile
文件,但
-rw-rw-r-- 1 naveenkumar naveenkumar 1600 Aug 8 05:12 volatandconstvolatile
然后我更改了权限chmod 777 volatandconstvolatile
然后./volatandconstvolatile
./volatandconstvolatile: cannot execute binary file: Exec format error
objdump volatandconstvolatile | grep "archit"
architecture: i386:x86-64, flags 0x00000011:
readelf -a -W volatandconstvolatile
我知道volatile
是用来从外部手段获取值的。
为什么会出现此错误?
答案 0 :(得分:4)
gcc -c -o volatandconstvolatile volatandconstvolatile.c
此编译命令行没有任何意义。
-c
的意思是“仅编译”,不链接。但是您留下了.o
后缀,这意味着您正在构建一个完整的可执行文件,这是错误的。
您可以通过取消-c
来在这样的GCC调用中构建完整的应用程序:
gcc -o volatandconstvolatile volatandconstvolatile.c
请注意,LD自动设置输出二进制文件的可执行位。您必须手动chmod
该文件这一事实应该表明存在某些问题。