【问题标题】:Simple makefile for compiling a shared object library file用于编译共享对象库文件的简单 makefile
【发布时间】:2012-05-29 16:28:42
【问题描述】:

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

我不需要创建像 *.so.1.0 这样的任何版本,而只需要创建一个简单的 *.so 文件。我的项目会有多个文件,所以我需要一个编译多个文件的示例。

【问题讨论】:

    标签: c++ c linux gcc x86-64


    【解决方案1】:

    我能想到的最简单的 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)
    • 这就是我要找的。谢谢。
    • @KerrekSB 1) 否。CXXFLAGS 正在隐式 %.o: %.cc 规则中使用。 2) 使其简单易懂。但我已经添加了您建议的替代方案。
    • @user1018562 - 请注意我使用了CXXFLAGS,因为我使用 C++ 作为我的测试语言。如果您使用 C 作为编程语言,您可能需要使用 CFLAGS
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 2015-11-02
    • 2018-04-04
    • 2018-07-05
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    相关资源
    最近更新 更多