0

だから私はこの構造を持っています:

simpleConnect.cpp (main を含む) feature_extract.cpp を呼び出す

feature_extract.cpp (ここでいくつかのことを行い、simpleConnect に戻ります)

ThesisHeader.h (feature_extract の宣言とすべてのインクルードなどがあります...)

現在...これらのファイルは、ARIA (モバイルロボットに使用) と呼ばれるライブラリと一連のヘッダー ファイル - EIGEN (行列操作など) を使用します。

私は、次のように Aria によって構造を提案していました。

SOURCES=simpleConnect
all: $(SOURCES)

CFLAGS=-fPIC -g -Wall
ARIA_INCLUDE =-I/usr/local/Aria/include
ARIA_LINK=-L/usr/local/Aria/lib -lAria -lpthread -ldl -lrt


%: %.cpp
        $(CXX) $(CFLAGS) $(ARIA_INCLUDE) $< -o $@ $(ARIA_LINK)

しかし、関数 feature_extract を呼び出す行でこのエラーが発生します。

'feature_extract(......)' collect2 への未定義の参照: ld は 1 終了ステータスを返しました

私が理解できる限り、これはコンパイラに feature_extract があることを伝えていないことに関係しています....方法がわからないため...

オンラインで見つけた作品を追加しようとしましたが、役に立たなかったので、ここで質問しました。

コンパイルできるようにそのファイルをインクルードするように、だれか親切に makefile を変更できますか?

お時間をいただきありがとうございます、パトリック

4

2 に答える 2

0
  1. このアプリには「feature_extract」が必要です。
  2. ソース以外に「SOURCES」を使用しています。
CFLAGS=-fPIC -g -Wall
ARIA_INCLUDE =-I/usr/local/Aria/include
ARIA_LINK=-L/usr/local/Aria/lib -lAria -lpthread -ldl -lrt

app_name: simpleConnect.cpp feature_extract.cpp
    $(CXX) $(CFLAGS) $(ARIA_INCLUDE) $^ -o $@ $(ARIA_LINK)

これが機能する場合、さらなる改良が可能です。

于 2013-03-29T01:16:20.520 に答える
0

助けてくれた人たちのおかげで、なんとかこの問題を解決することができました。

私は最終的に GNU make マニュアルを読んで、問題を解決しました。

https://www.gnu.org/software/make/manual/make.pdf

これは、最終的に機能する最終的なメイクファイルです。

    CFLAGS=-fPIC -g -Wall
ARIA_INCLUDE =-I/usr/local/Aria/include
ARIA_LINK=-L/usr/local/Aria/lib -lAria -lpthread -ldl -lrt

edit : simpleConnect.o feature_extract.o
        $(CXX) $(CFLAGS) $(ARIA_INCLUDE) -o edit simpleConnect.o
feature_extract.o $(ARIA_LINK)

simpleConnect.o : simpleConnect.cpp ThesisHeader.h feature_extract.cpp
        $(CXX) $(CFLAGS) $(ARIA_INCLUDE) -c simpleConnect.cpp $(ARIA_LINK)

feature_extract.o : feature_extract.cpp ThesisHeader.h
        $(CXX) $(CFLAGS) $(ARIA_INCLUDE) -c feature_extract.cpp $(ARIA_LINK)

clean :
        rm edit simpleConnect.o feature_extract.o
于 2013-03-29T12:44:33.830 に答える