我的makefile中有一个非常奇怪的错误:如果我将不正确的路径传递给以下构建的boost包含文件夹,我会得到一个.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
生成文件如下
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
有人可以建议吗
非常感谢
你在某处安装了另一个旧版本的 boost,例如/usr/include/boost。您的代码可能使用旧的 boost 构建,但不是使用 1.49。
此外,通常不需要使用 -I.
.只需使用include ""
(带双引号)搜索包含的文件的文件夹。