在 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如何区分链接的是动态库还是静态库?