在 gcc Linux 中将静态库链接到动态库

Posted

技术标签:

【中文标题】在 gcc Linux 中将静态库链接到动态库【英文标题】:link static library into dynamic labrary in gcc Linux 【发布时间】:2017-08-09 11:24:19 【问题描述】:

我有很多在 32 位平台 Linux 下的“c++”上编写的静态库。现在我需要使用我的 c++ 功能在 64 位平台 Linux 中编译“c”动态库。 有人可以告诉我最好的方法来做到这一点。我知道我应该将所有函数原型放入 extern "C" 逻辑中,但我是否必须使用 "-fPIC" 键编译静态库。我必须在 gcc 编译器中使用哪些键来链接我的 c++ 库?任何帮助将不胜感激

非常感谢

【问题讨论】:

你有源代码中的 32 位还是静态二进制文件 是的,我有所有来源 您绝对需要的一件事是在链接命令中使用“g++”。它将添加所有需要的 c++ 库和限定符(除非您想手动完成)。您还应该使用“-m32”编译和链接代码。 【参考方案1】:

此链接对于创建库很有用:

http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html

这是用于混合 C 和 C++

https://isocpp.org/wiki/faq/mixing-c-and-cpp

【讨论】:

感谢您的帮助,这是我解决任务的步骤: 1 编译所有带有 -fPIC 和 -m64 标志的 cpp 库 3.添加到链接字符串 gcc -shared -xc++ -lstdc++ -shared-libgcc 和我的静态库

以上是关于在 gcc Linux 中将静态库链接到动态库的主要内容,如果未能解决你的问题,请参考以下文章

Linux中链接库去掉后缀名,gcc如何区分链接的是动态库还是静态库?

Linux上静态库和动态库的编译和使用

在 Windows 中将 VS2005 静态库与 gcc 链接

linux自己写的静态库gcc报错

gcc找不到静态库中的函数

如何静态链接到 libstdc++.喜欢升级的GCC的朋友快来看看