magea - linux x86_64错误:执行shell C代码静态编译



我正在尝试使用以下代码在C中执行shell:

#include <unistd.h>
int main(){
    char *name[2];
    name[0] = "/bin/sh";
    name[1] = NULL;
    execve(name[0],name,NULL);
    return(0);
}

要编译它,我使用gcc -static标志:

gcc -static -o shell shell.c

但是,我得到以下错误:

/bin/ld: cannot find -lc

到目前为止,我试着运行:ld -lc --verbose,这是我发现的:

attempt to open /usr/x86_64-mageia-linux-gnu/lib64/libc.so failed
attempt to open /usr/x86_64-mageia-linux-gnu/lib64/libc.a failed
attempt to open /usr/local/lib64/libc.so failed
attempt to open /usr/local/lib64/libc.a failed
谁能帮我弄清楚这里出了什么问题?

您缺少(至少)一个静态版本的glibc。如果你真的想静态链接(我假设动态链接,没有-static标志,会工作吗?为什么要在这里静态地链接 ?)——你必须找出在你的发行版中哪个包包含libc.a文件。

另一方面,如果编译从来没有工作,不管-static与否,你错过了开发包,通常称为libc-dev, libc-devel, glibc-dev, glibc-devel或类似的东西,这真的取决于你的发行版。

如果你想使用-static,你需要安装glibc-static-devel.

相关内容

  • 没有找到相关文章

最新更新