如何在c编程中编译和链接文件?

fSa*_*azy 2 c linux

我是c编程语言的新手.我在centos linux系统下的同一目录下有以下文件.

  • game.c

    game.h

    main.c中

game.h

#ifndef GAME_
#define GAME_

extern void game (void);

#endif
Run Code Online (Sandbox Code Playgroud)

game.c

#include "game.h"

void game (void)
{
   return 23;
}
Run Code Online (Sandbox Code Playgroud)

main.c中

#include "game.h"

int main (void)
{
    game();
}
Run Code Online (Sandbox Code Playgroud)

当我使用以下命令编译时..

gcc main.c
Run Code Online (Sandbox Code Playgroud)

我收到如下错误消息..

/tmp/ccwIlBKt.o:在功能main': main.c:(.text+0x7): undefined reference to游戏'collect2:ld中返回1退出状态

链接我的头文件的正确方法是什么?

VIN*_*TIC 7

您需要编译并链接这两个程序.

首先编译并创建这样的目标文件

gcc -c game.c

gcc -c main.c
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样生成可执行文件

gcc game.o main.o -o myexe 
Run Code Online (Sandbox Code Playgroud)

您可以使用这样包含库文件

gcc game.o main.o -o myexe -lsocket -wall
Run Code Online (Sandbox Code Playgroud)

这里lsocket是套接字库,并且在链接代码时使用-wall显示是否有任何警告