用于编译共享对象库文件的简单makefile

问题描述:

我需要一个非常简单的makefile来编译共享对象库文件(* .so)。我还需要知道如何传递优化参数,如-O2和-O3。我试图用谷歌搜索简单的例子,但所有的例子都是扭曲的。用于编译共享对象库文件的简单makefile

我不需要创建任何类似* .so.1.0的版本,只需要一个简单的* .so文件。我的项目将有多个文件,所以我需要一个编译多个文件的例子。

,我能想到的最简单的makefile你想要做什么:

CXXFLAGS += -fPIC 
CXXFLAGS += -O3 
x.so: x.o y.o 
    g++ -shared $^ -o [email protected] 

在备选方案中,您可能需要使用更多的make的内置规则和变量:

CXXFLAGS += -fPIC 
CXXFLAGS += -O3 
x.so: x.o y.o 
    $(LINK.cc) -shared $^ $(LOADLIBES) $(LDLIBS) -o [email protected] 
+1

你不需要在调用中明确引用'CXXFLAGS'吗?另外,为什么'g ++'而不是'$(CXX)'? –

+0

这就是我正在寻找的。谢谢。 – pythonic

+0

@KerrekSB 1)编号CXXFLAGS被用于隐含的'%.o:%.cc'规则。 2)简单易懂。但我已经添加了你建议的替代方案。 –