首页 热点资讯 义务教育 高等教育 出国留学 考研考公

LINUX下要在C中嵌入Python,编译的时候怎样解决库的连接问题

发布网友 发布时间:2022-04-26 14:28

我来回答

1个回答

热心网友 时间:2022-04-18 21:24

原因分析:
先看几个概念:
与外部库连接

外部库有两种: (1)静态连接库lib.a
        (2)共享连接库lib.so
共同点:
.a, .so都是.o目标文件的集合,这些目标文件中含有一些函数的定义(机器码),而这些函数将在连接时会被最终的可执行文件用到。
区别:
静态库.a : 当程序与静态库连接时,库中目标文件所含的所有将被程序使用的函数的机器码被copy到最终的可执行文件中。
共享库.so : 与共享库连接的可执行文件只包含它需要的函数的表,而不是所有的函数代码,在程序执行之前,那些需要的函数代码被拷贝到内存中,这样就使可执行文件比较 小,节省磁盘空间(更进一步,操作系统使用虚拟内存,使得一份共享库驻留在内存中被多个程序使用)。共享库还有个优点:若库本身被更新,不需要重新编译与 它连接的源程序。

具体分析:
编译器会给出上述错误信息,这是因为sqrt函数不能与外部数学库"libm.a"相连。sqrt函数没有在程序中定义,也不存在于默认C库 "libc.a"中,应该显式地选择连接库。上述出错信息中的"/tmp/ccdzoSZq.o"是gcc创造的临时目标文件,用作连接时用。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com