如何使用 G++/LD 将库链接到共享对象
Posted
技术标签:
【中文标题】如何使用 G++/LD 将库链接到共享对象【英文标题】:How to link library into shared object with G++/LD 【发布时间】:2021-12-31 22:58:22 【问题描述】:我正在开发一个 C++ 项目,该项目将被编译成一个共享对象文件。它需要访问 python 解释器,这是我遇到的障碍:链接后,我收到/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginT.o: relocation R_X86_64_32 against hidden symbol '__TMC_END__' can not be used when making a shared object
(__TMC_END__
的开头引用是一个反引号,但这破坏了格式,所以我更改了它,如果这是有用的信息)。
显而易见的解决方案是下载 Python 源代码并将其与我的代码一起编译,但我不想让我的开发工作流程复杂到这一点,因此,我的问题是:如何将 Python 解释器嵌入到我的共享对象中文件?
我在 Ubuntu 20.04 上安装了完整的 Python 3.9,并且可以访问所有开发文件。
(如果这是错误的网站,我深表歉意)
【问题讨论】:
【参考方案1】:看来我的问题是通过将 python 库添加到 g++ shared-object-builder 命令来解决的。我之前只将它添加到编译的第一阶段(转换为目标文件)。
【讨论】:
以上是关于如何使用 G++/LD 将库链接到共享对象的主要内容,如果未能解决你的问题,请参考以下文章