/lib/../lib64/crt1.o:在函数‘_start’中(.text+0x20)对‘main’未定义的引用 collect2: error: ld returned 1exit status

在Linux环境下进行编程时遇到了一个常见的链接错误,表现为‘_start’函数中对‘main’的引用未定义。博主检查了代码和编译指令,发现原来是将`main`误写成了`mian`,修正这个拼写错误后,问题得到解决。此篇博客分享了这一经验,提醒开发者越是基础的部分越容易被忽视。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/lib/…/lib64/crt1.o:在函数‘_start’中(.text+0x20)对‘main’未定义的引用 collect2: error: ld returned 1exit status

今天在linux虚拟机写代码时,make的时候报错了,我先附上我在网上找的不同类型的解决方案:

  1. https://blog.csdn.net/u013245162/article/details/88923808
  2. https://blog.csdn.net/k916631305/article/details/109327030
  3. https://www.freesion.com/article/73451036944/

最后说明一下,我看了几遍我明明写了main函数,然后编译链接的指令也是对的,反复对照很久发现我把main写成mian了真是无语子😶,真是越熟悉的有时候反而越忽略了。

whx@whx-virtual-machine:~/OprSyeLearn/FileOpr$ vim file.c whx@whx-virtual-machine:~/OprSyeLearn/FileOpr$ whx@whx-virtual-machine:~/OprSyeLearn/FileOpr$ gcc -o file.c file file:在函数‘_fini’中: (.fini+0x0): `_fini'被多次定义 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o:(.fini+0x0):第一次在此定义 file:在函数‘data_start’中: (.data+0x0): `__data_start'被多次定义 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o:(.data+0x0):第一次在此定义 file:在函数‘data_start’中: (.data+0x8): `__dso_handle'被多次定义 /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o:(.data+0x0):第一次在此定义 file:(.rodata+0x0): `_IO_stdin_used'被多次定义 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o:(.rodata.cst4+0x0):第一次在此定义 file:在函数‘_start’中: (.text+0x0): `_start'被多次定义 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o:(.text+0x0):第一次在此定义 file:在函数‘_init’中: (.init+0x0): `_init'被多次定义 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o:(.init+0x0):第一次在此定义 /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o:(.tm_clone_table+0x0): `__TMC_END__'被多次定义 file:(.data+0x10):第一次在此定义 /usr/bin/ld : 在file (.eh_frame)中发生错误; .eh_frame_hdr表格不会被创建。 collect2: error: ld returned 1 exit status whx@whx-virtual-machine:~/OprSyeLearn/FileOpr$ gcc file.c -o file gcc: error: file.c: 没有那个文件或目录 gcc: fatal error: no input files compilation terminated. whx@whx-virtual-machine:~/OprSyeLearn/FileOpr$ ls file txt whx@whx-virtual-machine:~/OprSyeLearn/FileOpr$ mv file file.c whx@whx-virtual-machine:~/OprSyeLearn/FileOpr$ ls file.c txt whx@whx-virtual-machine:~/OprSyeLearn/FileOpr$ cat file.c 我现在不小心按照上述的操作将file.c转换为file,再用mv操作后导致乱码,有什么办法能复原我的file.c文件内容
最新发布
04-02
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值