运行命令
gcc -c shuffle.c
并确定它创建了一个名为 shuffle.o 的新文件。编辑game.c文件,在第7行,在 deck_t类型的变量 deck 声明之后,加上下面这一行:
shuffle(&deck);
现在,如果我们还象以前一样创建可执行文件,我们就会得到一个错误
gcc -o game game.c/tmp/ccmiHnJX.o: In function `main'':/tmp/ccmiHnJX.o(.text+0xf): undefined reference to `shuffle''collect2: ld returned 1 exit status
编译成功了,因为我们的语法是正确的。但是连接步骤却失败了,因为 我们没有告诉编译器''shuffle''函数在哪里。 那么,到底什么是连接?我们怎样告诉编译器到哪里寻找这个函数呢?
连接
连接器ld,使用下面的命令,接受前面由 as 创建的目标文件并把它转换为可执行文件
gcc -o game game.o shuffle.o
这将把两个目标文件组合起来并创建可执行文件 game。
连接器从shuffle.o目标文件中找到 shuffle 函数,并把它包括进可执行文件。 目标文件的真正好处在于,如果我们想再次使用那个函数,我们所要做的就是包含"deck.h&qu...
>> 阅读全文