gpt4 book ai didi

c - gcc -c 和 ld : exec No such file or directory

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:29 27 4
gpt4 key购买 nike

<分区>

我知道这是一个非常基本的问题,但是虽然我发现了类似的问题,但我没有找到解决方案...

我对这个简单的程序有同样的问题:

#include <stdio.h>

void main()
{
printf("Hi\n");
fflush(stdout);
}

如果我用 gcc main.c 编译,我没有问题。

如果我用 gcc -c main.c 编译,然后用 ld -o main main.o 链接,我得到错误 undefined reference 用于putsstdoutfflush。我在末尾添加了 -lc 并且创建的二进制文件只有 _start 点上的警告但是当我执行程序时,它返回一个通用的 “找不到文件” 错误。如果我没记错的话,问题是链接器正在使用不存在的 libc.so.1 而不是我认为的 libc.so.6: readelf -a main

[Requesting program interpreter: /usr/lib/libc.so.1]

有谁知道哪里出了问题吗?这是一些环境/系统问题,还是我必须更改 ld 选项?怎么办?

谢谢你,并为这个“愚蠢”的问题感到抱歉……(以及我糟糕的“英语”)

编辑:“已解决”(见下文),只是添加从 gcc -v main.c [COLLECT_GCC_OPTIONS] 获得的新 ld 选项,我试图在最小值中减少:

ld -o main main.o --hash-style=gnu --as-needed -dynamic-linker /lib/ld-linux.so.2 -z relro /usr/lib/gcc/i686-linux-gnu/5/../../../i386-linux-gnu/crt1.o /usr/lib/gcc/i686-linux-gnu/5/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i686-linux-gnu/5/crtbegin.o -L/usr/lib/gcc/i686-linux-gnu/5 -L/usr/lib/gcc/i686-linux-gnu/5/../../../i386-linux-gnu -L/usr/lib/gcc/i686-linux-gnu/5/../../../../lib -L/lib/i386-linux-gnu -L/lib/../lib -L/usr/lib/i386-linux-gnu -L/usr/lib/../lib -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i686-linux-gnu/5/crtend.o /usr/lib/gcc/i686-linux-gnu/5/../../../i386-linux-gnu/crtn.o

EDIT2:启动程序,我认为最小值是

ld -o main main.o --as-needed -dynamic-linker /lib/ld-linux.so.2 -lc

它返回一个段错误(我认为是因为丢失了到 crt* 的链接)

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com