sudo gcc -o stack –g -z execstack -fno-stack-protector stack.c /usr/bin/ld: 找不到 –g: 没有那个文件或目录 collect2: error: ld returned 1 exit status
时间: 2024-03-23 07:38:51 浏览: 77
在ubuntu22.04中安装gcc-4.7的库及依赖库
这个命令的目的是使用 `gcc` 编译一个名为 `stack` 的可执行文件,该可执行文件是从 `stack.c` 源代码文件编译而来的。其中,`-o` 参数指定了输出文件的名称为 `stack`,`-g` 参数开启了调试信息,`-z execstack` 参数开启了栈可执行性保护,`-fno-stack-protector` 参数关闭了堆栈保护机制。
然而,该命令执行时出现了错误,提示找不到 `-g` 参数。这可能是因为在 `-g` 参数和 `stack` 参数之间的空格被误认为是另一个参数 `–g`,导致 `gcc` 找不到这个参数。为了解决这个问题,可以将 `-g` 参数和 `stack` 参数之间的空格改为正常的空格,即使用空格键来输入,而不是复制其他文本中的空格。
正确的命令应该是:
```
sudo gcc -o stack -g -z execstack -fno-stack-protector stack.c
```
这个命令将会编译 `stack.c` 文件,生成一个名为 `stack` 的可执行文件,并开启了栈可执行性保护,关闭了堆栈保护机制。需要注意的是,这个命令需要 root 权限才能执行,因为它需要修改系统的安全设置。
阅读全文