首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mageia-Linux x86_64错误:带有静态编译的exec外壳C代码

Mageia-Linux x86_64错误:带有静态编译的exec外壳C代码
EN

Stack Overflow用户
提问于 2015-10-05 03:08:48
回答 2查看 45关注 0票数 0

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

代码语言:javascript
复制
#include <unistd.h>
int main(){
    char *name[2];
    name[0] = "/bin/sh";
    name[1] = NULL;
    execve(name[0],name,NULL);
    return(0);
}

为了编译这段代码,我使用了gcc的-static标志:

代码语言:javascript
复制
gcc -static -o shell shell.c

但是,我得到以下错误:

代码语言:javascript
复制
/bin/ld: cannot find -lc

到目前为止,我已经尝试运行:ld -lc --verbose,下面是我找到的结果:

代码语言:javascript
复制
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

有没有人能帮我弄清楚这里出了什么问题?

EN

回答 2

Stack Overflow用户

发布于 2015-10-05 03:25:07

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

另一方面,如果编译永远不起作用,不管是不是-static,你都错过了开发包,通常被称为libc-devlibc-develglibc-devglibc-devel或类似的东西,这真的取决于你的发行版。

票数 0
EN

Stack Overflow用户

发布于 2016-02-26 06:00:47

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32937297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档