我正在尝试使用以下代码在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有没有人能帮我弄清楚这里出了什么问题?
发布于 2015-10-05 03:25:07
您缺少(至少) glibc的静态版本。如果你真的想要静态链接(我假设动态链接,没有-static标志,可以吗?为什么要在这里静态链接?) --您必须找出哪个包包含发行版上所需的libc.a文件。
另一方面,如果编译永远不起作用,不管是不是-static,你都错过了开发包,通常被称为libc-dev,libc-devel,glibc-dev,glibc-devel或类似的东西,这真的取决于你的发行版。
发布于 2016-02-26 06:00:47
如果你想使用-static,你需要安装glibc-static-devel。
https://stackoverflow.com/questions/32937297
复制相似问题