![](/img/trans.png)
[英]linux x86_64 vm gcc error in architecture of executable output, exec file format error
[英]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-dev
, libc-devel
, glibc-dev
, glibc-devel
或類似的東西,這實際上取決於您的分布。
如果要使用-static,則需要安裝glibc-static-devel。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.