编译c ++,Makefile基础:变量,包括库

时间:2013-03-28 22:04:50

标签: c++ linux compiler-errors

我很难理解如何编译一个小型的linux应用程序,uvccapture。 Its source is here。我的问题围绕Makefile,并满足包含要求。

我需要知道的是,我应该定义MATH_LIB等变量,(如果有的话),-ljpeg意味着什么,以及我需要做些什么来满足它们。

我尝试了什么?阅读有关makefile的教程和参考资料,并尝试编译和更改选项。结果:一般混乱!!!我几乎不知道该问什么。也许有人可以帮助我。

我已将jpeglib和uvccapture的源代码放在以下目录中:

~/src/jpeglib
~/src/uvccapture

到目前为止,当cd进入~/src/uvccapture并运行make时,我无法解决以下错误:

jpeglib.h: No such file or directory

我正在编写运行最新Raspbian'Wheezy'的Raspberry Pi。

UVCCapture的Makefile如下:

CC=gcc
CPP=g++
APP_BINARY=uvccapture
VERSION = 0.4
PREFIX=/usr/local/bin

WARNINGS = -Wall

CFLAGS = -std=gnu99 -O2 -DLINUX -DVERSION=\"$(VERSION)\" $(WARNINGS)
CPPFLAGS = $(CFLAGS)

OBJECTS= uvccapture.o v4l2uvc.o

all:    uvccapture

clean:
    @echo "Cleaning up directory."
    rm -f *.a *.o $(APP_BINARY) core *~ log errlog

install:
    install $(APP_BINARY) $(PREFIX)

# Applications:
uvccapture: $(OBJECTS)
    $(CC)   $(OBJECTS) $(XPM_LIB) $(MATH_LIB) -ljpeg -o $(APP_BINARY)

源文件仅包含uvccapture.c和v412uvc.h。 uvccapture.c的顶部包含以下几行:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <jpeglib.h>
#include <time.h>
#include <linux/videodev.h>

#include "v4l2uvc.h"

任何帮助克服上述错误都将不胜感激!并作为奖励,让整个事情编译。也许一个更简单的makefile可以做到?我不知道是否需要下载MATH_LIB文件,例如,或者它们是否带有gcc。

谢谢!

1 个答案:

答案 0 :(得分:3)

-ljpeg表示链接到名为libjpeg.a的库。由于您还没有头文件,我猜您没有在您的系统上安装此库。答案是找到该库并安装它。