打印
[嵌入式linux]

静态编译 如何只连接需要的函数(不检查静态库依赖关系)

[复制链接]
6367|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinanjj|  楼主 | 2009-12-9 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libpq.a(fe-auth.o): In function `pg_krb5_init':
(.text+0x224): undefined reference to `error_message'

像如上错误, 明显是因为libpq.a 中的fe-auth.o需要一个外接的静态库中包含error_message函数造成的, 而这个函数没有.

在实际程序中也没有使用这个功能 .

估计是连接时需要检查静态库的依赖关系, 如何让gcc(ld)不检查依赖关系?

相关帖子

沙发
sinanjj|  楼主 | 2009-12-9 17:16 | 只看该作者
高分拉,高分奖拉......

使用特权

评论回复
板凳
mohanwei| | 2009-12-9 17:23 | 只看该作者
只知道编译器在优化的时候能自动把不想关的代码全干掉……

使用特权

评论回复
地板
sinanjj|  楼主 | 2009-12-9 18:02 | 只看该作者
确实会干掉

但是干掉前会检查检查, 比如检查检查头文件有没有, 头文件里的函数有没有, 外调函数有没有. 编译成静态的时候这些查的很严的..


/usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libpq.a(fe-auth.o): In function `pg_krb5_init':
(.text+0x24c): undefined reference to `krb5_free_principal'
/usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libpq.a(fe-auth.o): In function `pg_krb5_destroy':
(.text+0x287): undefined reference to `krb5_free_principal'
/usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libpq.a(fe-auth.o): In function `pg_krb5_destroy':
(.text+0x299): undefined reference to `krb5_cc_close'
/usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libpq.a(fe-auth.o): In function `pg_krb5_destroy':
(.text+0x2ab): undefined reference to `krb5_free_unparsed_name'
/usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libpq.a(fe-auth.o): In function `pg_krb5_destroy':
(.text+0x2b6): undefined reference to `krb5_free_context'
/usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libpq.a(fe-auth.o): In function `pg_krb5_sendauth':
(.text+0x453): undefined reference to `krb5_sname_to_principal'
/usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libpq.a(fe-auth.o): In function `pg_krb5_sendauth':


这些是需要krb认证库的, 程序肯定不需要吧, 但没有编译不成静态文件, 连接过程中会去掉, 但检查不通过无法连接......

使用特权

评论回复
5
未来是梦| | 2009-12-10 13:23 | 只看该作者
这样行吗?
如果fe-auth.o里的函数一个都不用;
用ar命令把libpq.a里的模块fe-auth.o删除;

使用特权

评论回复
6
sinanjj|  楼主 | 2009-12-10 15:32 | 只看该作者
这样行吗?
如果fe-auth.o里的函数一个都不用;
用ar命令把libpq.a里的模块fe-auth.o删除;
未来是梦 发表于 2009-12-10 13:23


强, 怎么没想到呢?

高分就给你了..............

我试试.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

456

主题

6300

帖子

25

粉丝