2016-07-26 80 views
0

我正在编辑已在库中的示例文件。在示例的目录中,有一个我一直用来编译和运行示例的Makefile。我现在想要为这个make文件添加一个额外的库,我试图将头文件和.c文件复制并粘贴到Makefile中指定的库文件夹中,但它没有找到它。这里是Makefile代码:如何将库添加到make文件

CPPFLAGS = -I../../include 
CFLAGS = 
LDFLAGS = -L../../lib -L../../lib64 
LIBS = -lbsapi 

Biometry: main.c 
    $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) main.c -o Biometry $(LIBS) 

我想添加的库带有.h文件和.c文件。我已经加入那些到../../include目录,并确保这种权利根据原来的#include

#include <tpl.h> 

我不知道我错过了什么下面添加到我的代码?该程序在添加该库之前运行正常。

回答

0

图书馆通常是首先建立并安装到你的系统,所以你可以稍后将它们添加到你的Makefile中的LIBS(假设你的库叫做“foo”,-lfoo)。

所以,你有两个选择:

  1. 的“这倒是值得名字库”路径:找到或编写一个Makefile把foo.c的成libfoo.so,安装,然后使用LIBS= -lbsapi -lfoo
  2. “我包括我的源代码中的源代码,并希望一切正常”路径:将foo.o添加到Biometry需要的东西,并添加一个关于如何构建foo.o的配方foo.c,并将foo.c加入您的资料来源:
 
CPPFLAGS = -I../../include 
CFLAGS = 
LDFLAGS = -L../../lib -L../../lib64 
LIBS = -lbsapi 

Biometry: main.c foo.o 
    $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) main.c foo.o -o Biometry $(LIBS) 

foo.o: foo.c 
    $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) foo.c -o foo.o $(LIBS) 
+0

如果这是['tpl'](https://troydhanson.github.io/tpl/),那么我建议遵循[安装指南](https://troydhanson.github.io/) tpl/userguide.html#_build_and_install)。 – Kusalananda

+0

它是。我试着按照指南,把tpl.c和tpl.h放到我的主程序所在的文件夹中。当我建立时,我得到一个错误说:undefined引用(在tpl中的函数)。 – dchin2

+0

如上所述,您需要链接TPL代码,并添加说明中提到的'NOLIB'标志。应该管用 –