当前位置: 技术问答>linux和unix
调用一个自己写的利用了STL的共享库,在link时出错????
来源: 互联网 发布时间:2015-07-18
本文导语: 环境: Redhat 9.0 自己写了一个共享库,名为libmycomm.so, 放在/usr/local/lib, 同时头文件放在/usr/local/include下. 于是,我用另一个程序来调用它,我给的link参数是 -L/usr/local/include -lmycomm 结果出错的信息是: /usr/local/lib/libmyc...
环境: Redhat 9.0
自己写了一个共享库,名为libmycomm.so, 放在/usr/local/lib, 同时头文件放在/usr/local/include下. 于是,我用另一个程序来调用它,我给的link参数是 -L/usr/local/include -lmycomm
结果出错的信息是:
/usr/local/lib/libmycom.so: undefined reference to `std::char_traits::copy(unsigned short*, unsigned short const*, unsigned)'
/usr/local/lib/libmycom.so: undefined reference to `std::char_traits::length(unsigned short const*)'
/usr/local/lib/libmycom.so: undefined reference to `std::char_traits::move(unsigned short*, unsigned short const*, unsigned)'
collect2: ld returned 1 exit status
为什么在这里会现这样的链接错误呢? (libmycom.so本身在生成时并没有借用其它特别的库)
请指教,谢谢!
自己写了一个共享库,名为libmycomm.so, 放在/usr/local/lib, 同时头文件放在/usr/local/include下. 于是,我用另一个程序来调用它,我给的link参数是 -L/usr/local/include -lmycomm
结果出错的信息是:
/usr/local/lib/libmycom.so: undefined reference to `std::char_traits::copy(unsigned short*, unsigned short const*, unsigned)'
/usr/local/lib/libmycom.so: undefined reference to `std::char_traits::length(unsigned short const*)'
/usr/local/lib/libmycom.so: undefined reference to `std::char_traits::move(unsigned short*, unsigned short const*, unsigned)'
collect2: ld returned 1 exit status
为什么在这里会现这样的链接错误呢? (libmycom.so本身在生成时并没有借用其它特别的库)
请指教,谢谢!
|
-L/usr/local/include 是不对的,-I后面是跟头文件目录,-L是库所在目录
-L/usr/local/lib -lmycomm 这样就可以了。
-L/usr/local/lib -lmycomm 这样就可以了。
|
你的动态库是不是pic的?
还有你用的gcc是不是gcc2.96??
如果时gcc2.96的话,劝你换一个高版本的。
还有你用的gcc是不是gcc2.96??
如果时gcc2.96的话,劝你换一个高版本的。
|
把你生成so的makefile,和调用so那个程序的makefile贴上来看看。
|
莫非是里面用了什么模板?