【发布时间】:2013-07-04 20:52:19
【问题描述】:
我想编译一个小程序,它有一个非常简单的 makefile,但我似乎无法让它工作。也许你可以帮助我。 makefile 有以下目标:
visca-cli: visca-cli.c libvisca_hl.o
gcc -Wall -o visca-cli visca-cli.c /usr/local/lib/libvisca.so libvisca_hl.o
libvisca_hl.o: libvisca_hl.c
gcc -Wall -c libvisca_hl.c
我可以成功地“制作 libvisca_hl.o”并创建 .o 文件。但是 'make visca-cli' 失败并显示类似
的错误消息libvisca_hl.c:(.text+0x468a): 未定义的引用 `VISCA_get_md_disptime'
对于 libvisca.h 中定义的每个函数(这里是 VISCA_get_md_disptime)
以下是来自各种文件的包含部分(省略标准库):
在 visca-cli.c 中:
#include "libvisca.h"
#include "libvisca_hl.h"
在 libvisca_hl.c 中:
#include "libvisca_hl.h"
在 libvisca_hl.h 中:
#include "libvisca.h"
所有用“”引用的包含都存在于我运行 make 和所有源文件所在的本地目录中。没有子文件夹。所以我想问题出在makefile上?任何帮助表示赞赏!
【问题讨论】:
-
不。包含与链接器错误无关。图书馆可以。您没有链接到包含相关函数的定义(与声明相反)的必需库。
-
OP is 链接到包含定义的库。他/她只是在命令行的错误位置执行此操作。