【发布时间】:2012-05-29 16:28:42
【问题描述】:
我需要一个非常简单的 makefile 来编译共享对象库文件 (*.so)。我还需要知道如何传递优化参数,如 -O2 和 -O3。我试图用谷歌搜索简单的例子,但所有的例子都是扭曲的。
我不需要创建像 *.so.1.0 这样的任何版本,而只需要创建一个简单的 *.so 文件。我的项目会有多个文件,所以我需要一个编译多个文件的示例。
【问题讨论】:
我需要一个非常简单的 makefile 来编译共享对象库文件 (*.so)。我还需要知道如何传递优化参数,如 -O2 和 -O3。我试图用谷歌搜索简单的例子,但所有的例子都是扭曲的。
我不需要创建像 *.so.1.0 这样的任何版本,而只需要创建一个简单的 *.so 文件。我的项目会有多个文件,所以我需要一个编译多个文件的示例。
【问题讨论】:
我能想到的最简单的 makefile 可以满足您的需求:
CXXFLAGS += -fPIC
CXXFLAGS += -O3
x.so: x.o y.o
g++ -shared $^ -o $@
或者,您可能希望使用更多 make 的内置规则和变量:
CXXFLAGS += -fPIC
CXXFLAGS += -O3
x.so: x.o y.o
$(LINK.cc) -shared $^ $(LOADLIBES) $(LDLIBS) -o $@
【讨论】:
CXXFLAGS 吗?另外,为什么是g++ 而不是$(CXX)?
%.o: %.cc 规则中使用。 2) 使其简单易懂。但我已经添加了您建议的替代方案。
CXXFLAGS,因为我使用 C++ 作为我的测试语言。如果您使用 C 作为编程语言,您可能需要使用 CFLAGS。