编译C代码报Undefined symbols for architecture x86_64: _main错误如何解决
错误产生原因
这是链接阶段抛出的错误:C 语言规范要求,生成可执行程序必须有唯一的程序入口点,也就是main()函数。你当前的代码仅实现了自定义的ft_print_alphabet函数,没有定义main函数,链接器在组装可执行文件时找不到默认的程序入口符号,就会报_main未定义的错误。
解决方案
根据你的使用场景选择对应方案即可:
- 场景1:需要直接运行该代码测试
ft_print_alphabet的功能
直接在代码中补充main函数调用目标函数即可,修改后的完整代码如下:
修改后重新编译即可正常生成可执行文件运行。#include <unistd.h> void ft_print_alphabet(void) { write(1, "abcdefghijklmnopqrstuvwxyz", 26); } int main(void) { ft_print_alphabet(); return 0; } - 场景2:仅需要编译当前代码为目标文件/静态库,后续和其他带
main函数的代码一起使用
给编译指令添加-c参数,只执行编译流程不执行链接流程,以clang编译为例:clang -c ft_print_alphabet.c
执行后会生成后缀为.o的目标文件,不会触发链接入口检查。
内容的提问来源于stack exchange,提问作者Malsaman
相关产品推荐
相关产品推荐

