2014-09-04 17 views
1

我的c应用程序链接.so库。但应用说.so:未定义引用'min'

library.so:未定义的引用 '分钟'

我的编译器指令,如:

的gcc -o test.o library.so -ldl - lpthread -lm

有没有解决方法?请帮我

+0

如果你能得到你的代码进行编译,但是当你试图执行代码,那么你的应用程序就不能在运行时找到你已经链接到的库。这可以通过两种方式解决。您可以通过配置/etc/ld.so.conf添加您放置在/etc/ld.so.conf.d/中的信息来将库的位置添加到库缓存。或者,您可以使用'rpath'信息在可执行文件头中包含库的位置。 – 2014-09-04 05:23:21

+0

在这种情况下,找到该库,但该库包含一个不存在的符号('min')。要么修复库链接到可以找到min的位置(或者实现函数),要么如果这是不可能的,请自行提供min()(或者链接它存在的库,如果有的话)。 – perh 2014-09-04 09:18:18

回答

3

你需要传递-library与gcc而不是library.so,还提供library.so位置

gcc -L/path/to/library.so -o test.o -llibrary -ldl -lpthread -lm 
+5

我认为它是'-lrary'而不是'-llibrary'! – Sathish 2014-09-04 05:46:31