0

makefile内に非常に奇妙なエラーがあります。ブーストインクルードフォルダーに間違ったパスを渡すと、次のビルドが作成され、.oファイルが取得されます。ただし、正しいパスを渡すと、次のエラーが発生します。

/src/third-party/build/boost_1_49_0/include/boost/container/map.hpp:147:1:エラー:「sizeof」の不完全なタイプ「boost ::STATIC_ASSERTION_FAILURE」への適用が無効ですmake:* [Bidding.o]エラー1

makefileは以下のとおりです

CC=g++
TPLOC=/home/zil/RTB2/0.1/src/third-party/build
COMMON=/home/zil/RTB2/0.1/src/common
SRC_HEAD=/home/zil/RTB2/0.1

all:  Bidder.o main.o main

Bidder.o: Bidder.cpp
       $(CC) -g -fPIC -c Bids.cpp -I$(TPLOC)/boost_1_49_0/include -I.

main.o: main.cpp
    $(CC) -g -fPIC -c main.cpp -I$(TPLOC)/boost_1_49_0/include -I$(COMMON) -I$(TPLOC)/libzdb/include/zdb -I$(TPLOC)/apache/include

main: main.o
    $(CC) -fPIC main.o -o /home/zil/sandbox9/$@ -lbk -lrtbshm -lboost_program_options -lboost_thread -lapr-1 -lrt -lpthread -lzdb -L $(SRC_HEAD)/build/lib -L$(COMMON)/shm -L $(TPLOC)/boost_1_49_0/lib -L $(TPLOC)/libzdb/lib -L $(TPLOC)/apache/lib

誰かアドバイスしてもらえますか

どうもありがとう

4

1 に答える 1

0

/usr/include/boost などのどこかに別の古いバージョンの boost がインストールされている可能性があります。コードはおそらく古いブーストでビルドされますが、1.49 ではビルドされません。

また、多くの場合、使用する必要はありません-I.include ""インクルードを行うファイルのフォルダーを検索する(二重引用符で)を使用するだけです。

于 2012-06-21T10:19:28.297 に答える