簡體   English   中英

Mageia-Linux x86_64錯誤:具有靜態編譯功能的exec shell C代碼

[英]Mageia-Linux x86_64 Error: exec shell C code with static compilation

我正在嘗試使用以下代碼在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-devlibc-develglibc-devglibc-devel或類似的東西,這實際上取決於您的分布。

如果要使用-static,則需要安裝glibc-static-devel。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM