[英]Undefined symbols in a shared library compiled with a static library
我在一个可执行项目中将使用它的不同库链接在一起时遇到问题。
假设项目A包含一个名为foo()
的函数; 它被编译为静态库。
项目B包含一个函数名为bar()
,包括来自A的报头和编译为一个共享库-Wl
, --whole-archive libA.a -Wl
, --no-whole-archive flags
。
libB.so已移至/usr/lib
。
现在,项目C包含Bh
,调用bar()
,但是由于未定义对foo()
函数的引用而未进行编译,而foo()
函数是在项目A中定义的。
nm libB.so
说:
U foo
我正在使用gcc,编程语言是C,IDE是Eclipse CDT。
有谁有解决这个问题的想法或建议吗?
谢谢。
感谢Icarus3的贡献,这个问题得到了解决。
ProjectA中的某些功能使用了strict关键字,因此使用-std = gnu99进行了编译。 事实证明,从代码中删除该关键字,从编译命令中删除-std = gnu99最终解决了该问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.