体系结构x86_64和链接器命令的未定义符号失败,退出代码为1

时间:2018-11-17 05:04:11

标签: c

我从APUE运行以下代码

#include "apue.h" 
#include <sys/wait.h>

void pr_exit(int status)
{
    if (WIFEXITED(status))
        printf("normal termination, exit status = %d\n", 
            WEXITSTATUS(status));
    else if (WIFSIGNALED(status))
        printf("abnormal termination, signal number = %d%s\n", 
            WTERMSIG(status), 
#ifdef WCOREDUMP 
            WCOREDUMP(status) ? " (core file generated)" : "");
#else 
        "");
#endif 
    else if (WIFSTOPPED(status)) 
        printf("child stopped, signal number = %d\n", 
            WSTOPSIG(status));
}

但出现错误:

$ cc my_wait.c 
Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我已多次检查并确保与书中的说明没有区别。

我该如何解决问题?

1 个答案:

答案 0 :(得分:1)

根据要求将comment转换为答案。

错误消息显示“没有功能main()”,显示的源代码也没有功能main(),因此,出现该错误消息的可能性很小。

您认为main()来自何处?

构建程序时,需要从某个位置开始main(),并且标准C库未提供实现。 (如果您使用Flex或Lex,或Bison或Yacc,则可能会在它们的库中找到最少的main()程序,但这是一个例外,而不是常规。)