我可以从automake / autoconf中提取libtool配置以供单独使用吗?

时间:2015-02-26 13:06:30

标签: c++ autoconf automake libtool

我有一个简单的C ++库,它使用一个简短的autoconf,automake和libtool来构建一个共享库对象。

现在我希望能够在我的程序中通过以下方式在运行时动态编译新代码:

  • 将代码输出到临时文件(比如/tmp/code.cc)
  • 编译到库
  • 动态加载code.so到我的代码

我想找到运行此命令所需的命令。我可以看到运行'make -n'时使用的命令,但我真的不想尝试使用awk来搜索和替换这些命令的位!

1 个答案:

答案 0 :(得分:2)

此问题可以分解为以下子问题:

  • 确定如何编译程序本身(不应混合编译器和/或标志,特别是在C ++语言的情况下不应混合)。 您可以使用AC_DEFINE {{将CCCXXCFLAGSCXXFLAGSCPPFLAGS导出到config.h文件来执行此操作1}} autoconf中的宏。或者,您可以使用configure.ac和自定义AC_SUBST将这些变量存储在您选择的文件中。

  • 然后你召集编译器header.h.in给他CCCPPFLAGSCFLAGS CXXCPPFLAGS。但是,如果要通过程序加载这些文件,可以考虑使用名为libltdl的Libtool库,它以跨平台的方式实现插件。

  • 您可以考虑使用CXXFLAGS脚本作为跨平台编译包装器,但您必须study它,因为它有点晦涩 - 有编译,链接和“安装“阶段,但它们是以跨平台的方式处理的,如果你传递libtool参数,你需要的一些额外标志(-sharee和其他标志)将自动传递。