编译目标文件时出现g ++错误

时间:2012-03-16 06:47:14

标签: c++ c linker makefile

我编写了一个小的makefile,它遵循一般结构,创建目标文件,然后链接以创建可执行文件。这是它的外观..

CXX=g++
CXXFLAGS=-Wall -g
INCLUDES= -I ./
LDFLAGS= -L ./
LIBS= -lcryptopp
SRCS= test.cpp
OBJS= $(SRCS:.cpp=.o)
EXEC=test

all: $(EXEC) 

$(EXEC): $(OBJS)
    $(CXX) $(CXXFLAGS) $(INCLUDES) -o $(EXEC) $(OBJS) $(LDFLAGS) $(LIBS)
.cpp.o: 
    $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@

Cryptopp库(cryptopp)是静态的。现在当我尝试运行这个makefile时,当第一个尝试创建目标文件的命令运行时...它给了我很多这样的错误..

test.cpp:289:   instantiated from here
./include/algparam.h:322: warning: unused variable 'p'
./include/algparam.h: In member function 'void CryptoPP::AlgorithmParametersTemplate<T>::MoveInto(void*) const [with T = unsigned char]':

最后,它链接所有精细和可执行的工作,但如何在不删除-wall的情况下摆脱这些警告?我对make和makefiles没有多少经验。

2 个答案:

答案 0 :(得分:3)

这不是错误,这是一个警告。 (从技术上讲,您可以将警告视为不妨碍编译器完成其工作的错误。)

解决问题的方法是修复代码。这与makefile无关。从./include/algparam.h中的第322行删除变量'p'。 (编译器的警告消息中有一点提示。)

答案 1 :(得分:0)

对于此警告,您只需在test.cpp或.h文件中注释变量p,因为您不使用它,或者像这样

代码

{
...
#ifdef _DEBUG_
xxx p;
#endif
...
}

并在您的makefile中,如果您想使用p,只需在-D_DEBUG_

中添加CXXFLAGS即可