我从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)
我已多次检查并确保与书中的说明没有区别。
我该如何解决问题?
答案 0 :(得分:1)
根据要求将comment转换为答案。
错误消息显示“没有功能main()
”,显示的源代码也没有功能main()
,因此,出现该错误消息的可能性很小。
您认为main()
来自何处?
构建程序时,需要从某个位置开始main()
,并且标准C库未提供实现。 (如果您使用Flex或Lex,或Bison或Yacc,则可能会在它们的库中找到最少的main()
程序,但这是一个例外,而不是常规。)