动态库链接静态库,有95%的程序员陷入了陷阱。初学者必须阅读

事不宜迟,我们的情况是:有一个静态库liba_static_old.a,动态库libb_share.so将链接liba_static_old静态库。可执行文件链接动态库libb_share.so。

让我们首先查看源代码:

A_STATIC_OLD.C源代码

#include stdio.h

#include\’a_static_old.h\’

void打印机(void){

printf(\’来自a_static_old \\ n\’的打印信息);

}

b_share.c源代码

#include\’b_share.h\’

动态库链接静态库,有95%的程序员陷入了陷阱。初学者必须阅读

#include stdio.h

#include\’a_static_old.h\’

void printer_b(void){

printf(\’b_share调用\\ n\’的打印机);

打印机();

}

main.c源代码

#include\’b_share.h\’

#include stdio.h

#include\’a_static_old.h\’

动态库链接静态库,有95%的程序员陷入了陷阱。初学者必须阅读

void打印机(void){

printf(\’Main \\ n\’的“打印信息”);

}

int main(){

打印机_B();

}

我们期望的结果是:运行主机后,输出“ b_share调用打印机”和“来自a_static_old的打印信息”是输出

实际操作结果如下:

我们看到,动态库调用的打印机函数实际上位于主函数中。这是怎么回事?让我们拆卸libb_share.so。

因此,有没有办法使libb_share。链接时不使用符号表?我们可以使用-Bsymbolic链接选项。如下:

用户评论


古巷青灯

刚学会写C++的时候就遇到过好多这种事情!动态库和静态库搞混了,调试好久才发现问题出在链接方式上。这篇文章总结得真不错,应该把这份经验早点学习到!

    有9位网友表示赞同!


寻鱼水之欢

每次写项目都要仔细留意代码的依赖关系,不然就会遇到各种奇怪的问题。这篇文章讲得明白,而且很适合新手入门学习。

    有10位网友表示赞同!


青墨断笺み

作为一名老手,我也经常栽倒在动态库和静态库的链接方式上。感觉有时候文档写的太官方了,像这样轻松易懂的文章更实用!

    有10位网友表示赞同!


猫腻

这篇文章说的“95%软件工程师踩过坑”,真的!我也是其中之一!尤其是在项目复杂的时候,很容易忽略这些细节。感谢作者分享经验,希望更多人能够避免这种尴尬!

    有6位网友表示赞同!


你身上有刺,别扎我

说来说去还是绕不开动态库和静态库的连接方式之謎。这个事情确实容易让人头疼,读了这篇文章后感觉对这个问题有了更清晰的认识。

    有17位网友表示赞同!


あ浅浅の嘚僾

我曾经遇到过一个很大的项目,因为忘记链接静态库的问题导致崩溃,当时真的着急得不知道怎么办!幸好现在明白了这种问题,以后应该注意一点

    有14位网友表示赞同!


不识爱人心

这个"95%"比例太吓人了!还好我还没踩到这个坑,但已经把这篇文章收藏起来学习了。防患于未然永远是明智之举!

    有20位网友表示赞同!


迷路的男人

感觉文章写的太笼统了,很多概念没讲清楚。新手看这个文章估计还是一头雾水吧?建议作者能提供更多例子来解释。

    有19位网友表示赞同!


箜明

我感觉这篇文章只关注了链接方式本身,没有涉及到项目开发中的一些实际案例和场景应用。如果能结合一些实际用例,会更有说服力!

    有8位网友表示赞同!


限量版女汉子

虽然我写代码已经很多年了,但还是从这篇文章中学到了不少东西。感谢作者分享这些宝贵经验!

    有7位网友表示赞同!


雨后彩虹

动态库和静态库真的太复杂了,感觉总是弄不明白它们的区别和应用场景。希望以后会有更简单易懂的文章讲解这个主题!

    有16位网友表示赞同!


疲倦了

我是一个纯粹的Java开发者,很少接触C++项目。读完这篇文章,我对C++ 中动态库和静态库的问题也有了一定的了解。感谢作者的辛勤付出…

    有16位网友表示赞同!


话少情在

这篇文章真的太棒了,简洁明了地讲解了动态库和静态库的关键概念,还提供了很多实用技巧。对于想要学习编程的新人来说,这是一篇必读的文章!

    有11位网友表示赞同!


青衫负雪

作为一个资深程序员,我以前对链接方式非常熟悉,但看到这篇文章后,我发现自己仍然可以从中学到一些新的知识。感谢作者的总结,很有意义!

    有9位网友表示赞同!


丢了爱情i

如果能解释一下在C++标准库中如何使用动态库和静态库,那真是太棒了!

    有9位网友表示赞同!

上一篇
下一篇

为您推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@zhutibaba.com

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部