我正在尝试执行以下程序-
APUE.3E -> filedir -> filetype.c中(这是我下载APUE.3E时的默认值。我没有进行任何更改)

但是当我编译时,这是我收到的错误:

myramya~/Documents/apue.3e/filedir$ gcc filetype.c -lm -o filetype/tmp/cchPKE7K.o: In function main':filetype.c:(.text+0x94): undefined reference to err_ret'collect2: error: ld returned 1 exit status

我正在使用Linux Ubuntu。我已经在Documents文件夹中安装了APUE.3E。我具有管理员权限。我编写了一个简单的Hello.c程序,并使用以下命令执行:

$ gcc hello.c -o hello

而且没有任何问题。

最佳答案

您好的示例可以使用gcc一步完成编译,因为它不会调用其他文件中的任何函数(始终链接到标准C库中的函数除外)。

您的filetype.c调用函数err_ret,该函数不在filetype.c内,但在其他一些源文件中。

当编译较大的程序时,工作通常分两个步骤完成:首先,通过对每个源文件使用标志-c调用gcc,将源文件编译为目标文件。然后,通过对所有对象文件的gcc调用,将所有目标文件链接在一起。也可以将目标文件放到库中。通常,Makefile用于编译较大的项目。

您对apue.3e的特定情况在这里得到了很好的解释:https://unix.stackexchange.com/questions/105483/compiling-code-from-apue

关于c - APUE.H错误Linux C编程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36383182/

10-12 22:33