C ld:包含头文件时未找到架构x86_64的符号

C ld:包含头文件时未找到架构x86_64的符号,c,precompiled-headers,C,Precompiled Headers,我正在编写以下代码来打印底层操作系统。它是不完整的,可能是错误的(感谢错误的建议,不需要完整,因为它是为了学习目的) platform.c #include <stdio.h> void platfor

我正在编写以下代码来打印底层操作系统。它是不完整的,可能是错误的(感谢错误的建议,不需要完整,因为它是为了学习目的)

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);                                                           
} 
#include "./platform.h"                                                         
                                                                                
                                                                                
int main()                                                                      
{                                                                               
    platform(4);                                                                
}                                      
最后,在新文件中包含标题:

试试.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);                                                           
} 
#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)
                   

请对我宽容一点,谢谢你的帮助

您必须链接platform.c才能尝试.c 尝试使用以下命令:

gcc try.c platform.c
您只包含声明,而不包含实现。这将导致编译成功,但链接将失败,因为没有
平台的实现