将 LIBTOOL 的导出符号转换为 GCC

Posted

技术标签:

【中文标题】将 LIBTOOL 的导出符号转换为 GCC【英文标题】:translate LIBTOOL's export-symbol to GCC 【发布时间】:2016-06-10 18:26:50 【问题描述】:

GCC 中有没有类似于 Libtool 的 -export-symbols-regex 的东西? 据我了解,Libtool 为不同的工具链生成 Makefile。因此,Libtool 的 -export-symbols-regex 必须以某种方式转换为 GCC 标志等,对吧?

我正在构建一个共享库并使用 -ffunction-sections -fdata-sections -Wl,--gc-sections 删除未使用的符号。现在,我想告诉 GCC 保留哪些函数。

这就是我怀疑 Libtool 对 -export-symbols-regex 'foo' 所做的事情。但是如何通过纯 Makefile 直接调用 GCC 来实现呢?

【问题讨论】:

您错误地认为 libtool 会生成 makefile,或者 -export-symbol-regex 会为 GCC 生成命令行选项。该选项通过为链接器生成自定义链接器脚本来工作,您最好将任务留给libtool。根据the manual,您没有理由不能在自己的makefile 中使用libtool 您也不太可能需要根据需要使用 libtool 来构建共​​享库,除非您的构建需要是多平台的。我建议您放弃这个问题并发布一个最低限度地显示您希望共享库具有但不知道如何实现的功能的问题。 【参考方案1】:

据我了解,Libtool 会为不同的工具链生成 Makefile。

不,automake 的工作是生成 Makefile。 libtool 的工作是处理跨平台构建共享库的特殊性。

This question 有一些不同的方法,您可以尝试使用 GCC。 libtool 可能正在使用导出映射技术。

【讨论】:

以上是关于将 LIBTOOL 的导出符号转换为 GCC的主要内容,如果未能解决你的问题,请参考以下文章

Libtool 在 make install 期间未创建版本信息符号链接

如何将 Maple 中的符号变量导出到文本文件(Matlab 格式)?

Libtool 为对象添加前缀,但 gcov 要求它们不带前缀

ArcMap进行数据转换

ArcMap进行数据转换

在 Symfony2 中将多维数组转换为点表示法