无法执行二进制文件:Exec 格式错误 Ubuntu 18.04 x86-64 目标

无法执行二进制文件:Exec 格式错误 Ubuntu 18.04 x86-64 目标

执行二进制 test1 时出现以下错误:

   $ ./test1    
   bash: ./test1: cannot execute binary file: Exec format error

我检查了这个二进制文件上的“x”是否正确:

   $ ls -la test1
    -rwxrwxrwx 1 *** *** 5864 Apr  9 17:04 test1

我还验证了我的文件和我的 ubuntu 都可以在 x86-64 目标上运行:

   $ file test1
   test1: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), with debug_info, not stripped
   $ uname -a
   Linux ubuntu 5.3.0-46-generic #38~18.04.1-Ubuntu SMP Tue Mar 31 04:17:56 UTC 2020 x86_64     x86_64 x86_64 GNU/Linux

最后我的gcc版本是:

   $ gcc --version
   gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0

你能帮忙吗?

答案1

您使用的命令

gcc -g -Wall -c test1.c -o test1

创建二进制目标文件,而不是可执行文件。来自man gcc

   When you invoke GCC, it normally does preprocessing, compilation,
   assembly and linking.  The "overall options" allow you to stop this
   process at an intermediate stage.  For example, the -c option says not
   to run the linker.  Then the output consists of object files output by
   the assembler.

要创建可执行程序,您需要gcc通过删除以下选项来允许进入链接阶段-c

gcc -g -Wall test1.c -o test1

相关内容