0

RaspberryPiでuvccaptureを変更してコンパイルしようとしています。ここからソースを入手しました(ほんの数ファイルです)。

(私は思う)それが必要とする唯一の外部ファイルは私がここjpeglibからダウンロードしたものです。

コンパイルするとき、jpeglibソースファイルはどこに置きますか?UVCCaptureには次の行があります。

#include <jpeglib.h>

つまり、jpeglibソースファイルをUVCCaptureソースファイルと同じディレクトリに配置する必要があるということですか?それは厄介なようです。コンパイラを設定するにはどうすればよいですか(Makefileを変更しますか?)、uvccaptureインクルードファイルの行を変更する必要がないように、jpeglibファイルをどこに配置する必要がありますか?

副次的な質問ですが、どうして.hファイルだけが含まれ、.cファイルは含まれないのでしょうか。(私はC / C ++にかなり慣れていません)

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)

ありがとう

4

1 に答える 1

3

ソースファイル(uvccapture.c)は、ヘッダーファイル()がどこにあるかを気にしませんjpeglib.h-少なくともそうすべきではありません。コンパイラには、ヘッダーファイルを探す場所を指示する必要があります。従来、ヘッダーファイルはのようなディレクトリにinc_files/配置され、コンパイラは次のようなコマンドで呼び出されます。

gcc -blah -blah -blah -Iinc_files  -c -o uvccapture.o uvccapture.c

Makeを使用する場合、Makeはそのようなコマンドを実行する必要があります。したがって、makefileを編集するか、ヘッダーファイルを現在のディレクトリに配置します。

#includeC / C ++で使用する正しい方法は、ソースファイルとヘッダーファイルにヘッダーファイルを含めることです。つまり、foo.c次のような2つの行があります。

#include <bar>
#include "baz.h"

そして、baz.h次のような数行があるかもしれません:

#include <vector>
#include "qux.h" 

#include foo.cそれはほとんど決して良い考えではないので、あなたはほとんど決して見ることはありません。

于 2013-03-27T01:47:15.487 に答える