我尝试使用gcc从终端编译.c文件。该文件包括定义功能的个人库。此library.h和.c文件位于同一目录中。
我收到以下消息错误
undefined reference to `function'"
我应该使用另一个参数:
gcc -o nameoutput filename
或者我应该将library.h放在另一个目录中吗?
答案 0 :(得分:1)
假设您当前的工作目录中有library.c
,library.h
和main.c
:
$ gcc -Wall main.c library.c -o my_program
然后运行它:
$ ./my_program
答案 1 :(得分:1)
“未定义的引用”表示链接器找不到包含function
的编译主体的目标文件;它与.h文件没有任何关系。
我听起来你的情况是library.h
和library.c
在一个目录中,main.c
在不同的目录中。如果是这种情况,那么您的命令行将需要看起来像这样:
gcc -o program -I /path/to/library main.c /path/to/library/library.c
-I /path/to/library
表示gcc将在该路径中查找.h文件以及标准包含路径。这也允许你写
#include "library.h"
而不是
#include "/path/to/library/library.h"
在任何需要它的代码中。