2013-03-28 25 views
0

我很努力地理解如何編譯一個小型的Linux應用程序uvccapture。 Its source is here。我的問題圍繞着Makefile,並滿足包含需求。編譯C++,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。

是的makefile 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) 

的源文件只包含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。

謝謝!

+2

通常在debian系統上,你需要做的就是:'sudo apt-get install libjpeg-dev' – teppic

+0

謝謝你的工作!下一個錯誤是'linux/videodev.h:沒有這樣的文件或目錄'。我運行'sudo apt-get install libv4l-dev',但是錯誤仍然存​​在,如果我嘗試安裝libv4l2-dev它說它找不到這樣的包 – Jodes

+1

當你需要一些信息時,你會得到更多的搜索結果gcc文檔(-l是一個gcc標誌)比在makefile文檔中搜索。 –

回答

3

-ljpeg表示與名爲libjpeg.a的庫鏈接。由於你也沒有頭文件,我猜你沒有在你的系統上安裝這個庫。答案是找到該庫並安裝它。

+0

+1謝謝,這對我來說都是巫術,對於學習這麼多 – Jodes