当前位置: 技术问答>linux和unix
[求助]Makefile该怎么写!
来源: 互联网 发布时间:2016-06-10
本文导语: 只有一个源文件gthread.c,这个.c文件中用到了net-snmp和glib库的东西 在没加net-snmp之前我在终端编译是:gcc `pkg-config --cflags --libs gthread-2.0` gthread.c -o gthread 现在要加了net-snmp后,写成一个Makefile不知道如何加这个编...
只有一个源文件gthread.c,这个.c文件中用到了net-snmp和glib库的东西
在没加net-snmp之前我在终端编译是:gcc `pkg-config --cflags --libs gthread-2.0` gthread.c -o gthread
现在要加了net-snmp后,写成一个Makefile不知道如何加这个编译参数
我自己写了个如下面,有错误....
大家帮忙改下吧!谢谢了
在没加net-snmp之前我在终端编译是:gcc `pkg-config --cflags --libs gthread-2.0` gthread.c -o gthread
现在要加了net-snmp后,写成一个Makefile不知道如何加这个编译参数
我自己写了个如下面,有错误....
大家帮忙改下吧!谢谢了
CC=gcc
OBJS1=gthread.o
TARGETS=gthread
CFLAGS=-I. `net-snmp-config --cflags`
BUILDLIBS=`net-snmp-config --libs`
GLIBS=`pkg-config --cflags --libs gthread-2.0`
BUILDAGENTLIBS=`net-snmp-config --agent-libs`
# shared library flags (assumes gcc)
DLFLAGS=-fPIC -shared
all: $(TARGETS) gthread.o
gthread: $(OBJS1)
$(CC) -o gthread $(OBJS1) $(BUILDLIBS) $(GLIBS)
gthread.o : gthread.c
$(CC) -c gthread.c
clean:
rm $(TARGETS)
nstAgentPluginObject.so: nstAgentPluginObject.c Makefile
$(CC) $(CFLAGS) $(DLFLAGS) -c -o nstAgentPluginObject.o nstAgentPluginObject.c
$(CC) $(CFLAGS) $(DLFLAGS) -o nstAgentPluginObject.so nstAgentPluginObject.o
|
你在 console 上执行
pkg-config --libs glib-2.0 gthread-2.0
会获得:
-pthread -lgthread-2.0 -lrt -lglib-2.0
所以
GLIBS=`pkg-config --libs glib-2.0 gthread-2.0`
的效果等于:
GLIBS=-pthread -lgthread-2.0 -lrt -lglib-2.0
你编译的时候 连接不过是因为没有 -lgthread-2.0
pkg-config --libs glib-2.0 gthread-2.0
会获得:
-pthread -lgthread-2.0 -lrt -lglib-2.0
所以
GLIBS=`pkg-config --libs glib-2.0 gthread-2.0`
的效果等于:
GLIBS=-pthread -lgthread-2.0 -lrt -lglib-2.0
你编译的时候 连接不过是因为没有 -lgthread-2.0
|
用這個Makefile試了一下,沒發現什麼錯誤。你遇到的錯誤信息是什麼?
|
既然错误提示找不到 “glib.h”
那你就加一个 -I/usr/include/glib-2.0
指定路径看看行不行。
那你就加一个 -I/usr/include/glib-2.0
指定路径看看行不行。
|
既然 gcc `pkg-config --cflags --libs gthread-2.0` gthread.c -o gthread 能通过,
那么 你修改下 makefile:
BUILDLIBS=`pkg-config --cflags --libs` 看看。
那么 你修改下 makefile:
BUILDLIBS=`pkg-config --cflags --libs` 看看。