as -> ld -> 执行失败-6ren"> as -> ld -> 执行失败-我正在尝试在 x86_64 平台上通过 "gcc -S"-> "as"-> "ld"编译一个简化的 C 源文件。 该过程在没有错误的情况下完成,但在执行时,会显示“没有此类文件或目录”错误消息。 ct-6ren">
gpt4 book ai didi

gcc - x86_64 "gcc -S"-> as -> ld -> 执行失败

转载 作者:行者123 更新时间:2023-12-04 06:16:35 25 4
gpt4 key购买 nike

我正在尝试在 x86_64 平台上通过 "gcc -S"-> "as"-> "ld"编译一个简化的 C 源文件。

该过程在没有错误的情况下完成,但在执行时,会显示“没有此类文件或目录”错误消息。

ctest.c
int main()
{
return 0;
}

> gcc -S ctest.c
> as -o ctest.o ctest.s
> ld -o ctest /usr/lib64/crt1.o /usr/lib64/crti.o ctest.o -lc /usr/lib64/crtn.o
> ./ctest
bash: ./ctest: No such file or directory

> uname -a
Linux mkb3 2.6.27.48-0.3-default #1 SMP 2010-09-20 11:03:26 -0400 x86_64 x86_64 x86_64 GNU/Linux

我还尝试添加一些谷歌结果中所述的动态链接。
> ld -o ctest -dynamic-linker /lib64/ld-linux.so.2 /usr/lib64/crt1.o /usr/lib64/crti.o ctest.o -lc /usr/lib64/crtn.o

但错误仍然存​​在。

意见和建议表示赞赏。

编辑:我犯了一个错误,我的 linux 机器中不存在/lib64/ld-linux.so.2。我应该使用/lib64/ld-2.9.so。不知道 ld 不会报告指定不存在的库文件的错误。

最佳答案

-dynamic-linker对我有用,但我有一个 32 位系统。

运行 gcc -v -o ctest ctest.o并查看输出的最后一行。尝试将其作为命令运行。如果可行,就开始简化它,扔掉零件直到它不再起作用。然后扔掉更多的零件,等等。这就是我如何到达一个有效的命令。

您也可以只使用 gcc -o ctest ctest.o反而。

关于gcc - x86_64 "gcc -S"-> as -> ld -> 执行失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7157313/

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