【问题标题】:Generating a static library and an executable with a single installation (autoconf)使用单个安装生成静态库和可执行文件 (autoconf)
【发布时间】:2017-07-18 21:31:10
【问题描述】:

我知道如何构建项目或如何使用 autoconf 创建库。

我想要实现的是生成一个静态库并使用该库在单个 configure/make/make install 运行中构建一个项目。

我希望将一些源文件放入库中,其余的使用该库进行编译。

如何修改 makefile.am 文件和 configure.ac 以使其正常工作?

【问题讨论】:

    标签: c++ static autoconf automake


    【解决方案1】:

    最简单的方法是使用 libtool 和 automake “便利库”。 这是一个最小的例子 对于 Makefile.am

    lib_LTLIBRARIES = libExample.la 
    libExample_la_SOURCES = lfile1.C 
    bin_PROGRAMS = test
    test_SOURCES = tfile1.C 
    test_LDADD = libExample.la 
    

    用于configure.ac

    AC_INIT(test, 1.0)
    AC_CONFIG_MACRO_DIR([m4])
    AM_INIT_AUTOMAKE([foreign])
    AC_PROG_CXX
    AC_PROG_LIBTOOL
    AC_SUBST(LIBTOOL_DEPS)
    AC_LTDL_DLLIB
    AC_CONFIG_FILES([Makefile])
    AC_OUTPUT
    

    这将在 .libs 目录中构建静态和动态库 libExample。
    如果你只想要一个静态库,你可以将--disable-shared 传递给configure

    【讨论】:

    • 运行 automake 时出现此错误:src/Makefile.am:5: variable libsadspider_la_SOURCES' is defined but no program or src/Makefile.am:5: library has libsadspider_la' as canonic name(可能是拼写错误)
    • 听起来您没有在 lib_LTLIBRARIES 中列出 libsadspider.la,或者它拼写错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多