【发布时间】:2013-12-02 08:03:12
【问题描述】:
我想标题有点令人困惑,但我会尝试澄清我的意思。 下面我附上了我的make文件。正如您在第四行看到的,我正在选择我希望我的项目链接的所有库。
当项目编译时,我看到它正在创建的每个目标文件都与 LIBRA 行指定的所有库链接。并非我的项目中的所有文件都需要所有这些库。每个 .cpp 文件可能只使用一两次。
这会对编译过程产生任何额外的成本吗?这会创建一个更大的二进制文件吗?现代编译器是否足够好以至于这不是问题,还是我必须阅读更多关于编译器的文献?
CC=g++
CFLAGS=-c -Wall -std=c++11 -g
LDFLAGS+=-ldl
LIBRA= -lboost_system -lboost_filesystem -lboost_thread -lsigar-x86_64-linux -ldl -lsqlite3
LIBB=-L/home/tensai/SIGAR/lib -L/usr/include -L/usr/local/lib
SOURCES=main.cpp config_reader.cpp database_manager.cpp monitor_agent.cpp analyze_agent.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=lnmp
INCLUDES = -I/home/tensai/SIGAR
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) $(INCLUDES) $(LIBB) -o $@ $(LIBRA)
.cpp.o:
$(CC) $(CFLAGS) $(INCLUDES) $(LIBB) $< -o $@ $(LIBRA)
clean:
rm *.o
【问题讨论】:
标签: c++ gcc compiler-construction linker makefile