【发布时间】:2017-10-21 05:28:28
【问题描述】:
我需要编译胖二进制文件才能在另一台 linux 机器上使用它。但是缺少一些库,所以据我所知,我应该使用一些 -shared 选项来编译它。但我不明白如何为此配置 Makefile。目前我的makefile看起来像这样:
CC = g++
CC_FLAGS = -std=c++11 -O2 -static -Wall
EXEC = cpp_server
SOURCES = $(wildcard *.cpp)
OBJECTS = $(SOURCES:.cpp=.o)
LIBS = -lpthread -lmicrohttpd -lz
$(EXEC): $(OBJECTS)
$(CC) $(OBJECTS) -o $(EXEC) $(LIBS)
%.o: %.cpp
$(CC) -c $(CC_FLAGS) $< -o $@
clean:
rm -f $(EXEC) $(OBJECTS)
【问题讨论】:
-
它已经在工作了,但是我需要将此库编译到我的二进制文件中,以便能够在未安装该库的计算机上执行它
-
请注意,fat binary 具有特定 含义,这不是您想要的。所以只说二进制(或静态链接的二进制)。
-
一般来说,如果你不知道怎么做,你就不能用Make来做某事没有 Make。您必须弄清楚如何使用命令行构建二进制文件,然后再担心将技术包装到 makefile 中。
标签: c++ makefile compilation shared-libraries