ld:包含 header 文件时未找到体系结构 x86_64 的符号
ld: symbol(s) not found for architecture x86_64 when including header file
我正在编写以下代码来打印底层操作系统。它不完整,可能是错误的(感谢对错误的建议,不需要完整的,因为它是为了学习目的)。
platform.c
#include <stdio.h>
void platform(int a)
{
#if __APPLE__
printf("recognized apple\n");
#elif __LINUX__
printf("linux\n");
#else
printf("unknown\n");
#endif
printf("%i\n",a);
}
如果我将 main()
添加到 platform.c 并编译它,它工作正常。但是,由于我出于学习目的进行试验,因此包括一个 header 文件:
platform.h
#ifndef PLATFORM_H_ /* Include guard */
#define PLATFORM_H_
void platform(int);
#endif // PLATFORM_H_
和最后包括新文件中的header:
Try.c
#include "./platform.h"
int main()
{
platform(4);
}
我将其编译为:
gcc try.c
我得到:
Undefined symbols for architecture x86_64:
"_platform", referenced from:
_main in lala-10eeb5.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
请放轻松,谢谢你的帮助!
你必须 link platform.c 到 Try.c
尝试使用此命令:
gcc try.c platform.c
您只包含了声明,没有包含实现。这导致编译成功,但 linking 将失败,因为 platform
.
没有实现
我正在编写以下代码来打印底层操作系统。它不完整,可能是错误的(感谢对错误的建议,不需要完整的,因为它是为了学习目的)。
platform.c
#include <stdio.h>
void platform(int a)
{
#if __APPLE__
printf("recognized apple\n");
#elif __LINUX__
printf("linux\n");
#else
printf("unknown\n");
#endif
printf("%i\n",a);
}
如果我将 main()
添加到 platform.c 并编译它,它工作正常。但是,由于我出于学习目的进行试验,因此包括一个 header 文件:
platform.h
#ifndef PLATFORM_H_ /* Include guard */
#define PLATFORM_H_
void platform(int);
#endif // PLATFORM_H_
和最后包括新文件中的header:
Try.c
#include "./platform.h"
int main()
{
platform(4);
}
我将其编译为:
gcc try.c
我得到:
Undefined symbols for architecture x86_64:
"_platform", referenced from:
_main in lala-10eeb5.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
请放轻松,谢谢你的帮助!
你必须 link platform.c 到 Try.c 尝试使用此命令:
gcc try.c platform.c
您只包含了声明,没有包含实现。这导致编译成功,但 linking 将失败,因为 platform
.