2012-05-29 55 views
2

我需要一個非常簡單的makefile來編譯共享對象庫文件(* .so)。我還需要知道如何傳遞優化參數,如-O2和-O3。我試圖用谷歌搜索簡單的例子,但所有的例子都是扭曲的。用於編譯共享對象庫文件的簡單makefile

我不需要創建任何類似* .so.1.0的版本,只需要一個簡單的* .so文件。我的項目將有多個文件,所以我需要一個編譯多個文件的例子。

回答

3

,我能想到的最簡單的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)簡單易懂。但我已經添加了你建議的替代方案。 –