我可以从 automake/autoconf 中提取 libtool 配置以供单独使用吗?
Can I extract libtool configuration from automake/autoconf for seperate use?
我有一个简单的 C++ 库,它使用简短的 autoconf、automake 和 libtool 来构建共享库对象。
现在我希望能够在 运行 时间在我的程序中动态编译新代码,方法是:
- 将代码输出到临时文件(比如 /tmp/code.cc)
- 编译成库
- 动态加载 code.so 到我的代码中
我想找到 运行 执行此操作所需的命令。我可以看到 运行ning 'make -n' 使用的命令,但我真的不想尝试使用 awk 来搜索和替换这些命令的位!
这个问题可以分解为以下子问题:
确定您是如何编译程序本身的(编译器和/或标志不应混用,尤其是在 C++ 语言的情况下)。
为此,您可以使用 AC_DEFINE [=] 将 CC
、CXX
、CFLAGS
、CXXFLAGS
和 CPPFLAGS
导出到 config.h
文件configure.ac
中的 16=] 宏。或者您可以使用 AC_SUBST
和您的自定义 header.h.in
将这些变量存储在您选择的文件中。
然后你调用编译器 CC
给他 CPPFLAGS
和 CFLAGS
或者 CXX
和 CPPFLAGS
和 CXXFLAGS
.但是,如果你想通过你的程序加载这些文件,你可以考虑使用名为 libltdl 的 Libtool 库,它以跨平台的方式实现插件。
您可以考虑使用 libtool
脚本作为跨平台编译包装器,但您必须 study 稍微使用一下,因为它有点神秘 - 有编译、链接和 "installation" 阶段,但它们是以跨平台的方式处理的,如果你传递 -sharee
参数,你需要的一些额外标志(-fPIC
和可能的其他)将被传递自动地。
我有一个简单的 C++ 库,它使用简短的 autoconf、automake 和 libtool 来构建共享库对象。
现在我希望能够在 运行 时间在我的程序中动态编译新代码,方法是:
- 将代码输出到临时文件(比如 /tmp/code.cc)
- 编译成库
- 动态加载 code.so 到我的代码中
我想找到 运行 执行此操作所需的命令。我可以看到 运行ning 'make -n' 使用的命令,但我真的不想尝试使用 awk 来搜索和替换这些命令的位!
这个问题可以分解为以下子问题:
确定您是如何编译程序本身的(编译器和/或标志不应混用,尤其是在 C++ 语言的情况下)。 为此,您可以使用 AC_DEFINE [=] 将
CC
、CXX
、CFLAGS
、CXXFLAGS
和CPPFLAGS
导出到config.h
文件configure.ac
中的 16=] 宏。或者您可以使用AC_SUBST
和您的自定义header.h.in
将这些变量存储在您选择的文件中。然后你调用编译器
CC
给他CPPFLAGS
和CFLAGS
或者CXX
和CPPFLAGS
和CXXFLAGS
.但是,如果你想通过你的程序加载这些文件,你可以考虑使用名为 libltdl 的 Libtool 库,它以跨平台的方式实现插件。您可以考虑使用
libtool
脚本作为跨平台编译包装器,但您必须 study 稍微使用一下,因为它有点神秘 - 有编译、链接和 "installation" 阶段,但它们是以跨平台的方式处理的,如果你传递-sharee
参数,你需要的一些额外标志(-fPIC
和可能的其他)将被传递自动地。