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

Compiling c++, Makefile basics: variables, including libraries

本文关键字:变量 包括库 Makefile c++ 编译 基础知识      更新时间:2023-10-16

我正在努力理解如何编译一个小的linux应用程序,uvccapture。它的源头在这里。我的问题围绕着Makefile,以及满足include的要求。

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

我试过什么了?阅读有关makefiles的教程和参考资料,并尝试编译和更改选项。结果是:普遍的困惑!!我都不知道该问什么了。也许有人能让我振作起来。

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

~/src/jpeglib
~/src/uvccapture

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

jpeglib.h: No such file or directory

我正在树莓派上编译运行最新的Raspbian 'Wheezy'。

UVCCapture的生成文件如下:

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)

源文件只包含uvcapture .c和v412uvc.h。uvcapture .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一起提供。

谢谢!

-ljpeg表示链接到libjpeg.a库。由于您也没有头文件,我猜您的系统上没有安装这个库。答案是找到这个库并安装它。