链接到应用程序时共享库的未定义引用

时间:2014-01-02 08:22:54

标签: linux arm cross-compiling

对于我的一个基于c ++的应用程序,我将我的一些代码作为共享库(仅限c ++ devlopment),并链接到我的测试应用程序以访问共享库的服务。我在linux上做的一切都很好。因为我已经为基于arm的嵌入式系统开发了这个。我试图在linux平台上使用arm cross tool chain设置交叉编译我的共享库和应用程序。我编写了一个makefile来创建一个共享库并编译我的应用程序。 当我进行交叉编译时,我的库被创建但是在链接到应用程序时它会产生以下错误。

lib / arm // libserviceclient.so:未定义引用`std :: basic_string,std :: allocator> :: _ S_compare(unsigned int,unsigned int)'

libserviceclient.so.0.2.0是我的共享库,下面是链接 libserviceclient.so.0 - > libserviceclient.so.0.2.0 libserviceclient.so - > libserviceclient.so.0

所以我认为这是libstdc ++的问题,我在make文件中使用了该链接

如果我在我的makefile链接静态lib -L ​​/ usr / local / cross / arm / arm-none-linux-gnueabi / libc / armv4t / usr / lib / libstdc ++。它编译但如果我链接共享arm- none-linux-gnueabi / libc / armv4t / usr / lib / libstdc ++。所以它会抛出相同的错误。

如果我使用c ++,

默认情况下这个libstdc ++是否链接? 有人可以帮助解决这个问题。

1 个答案:

答案 0 :(得分:0)

我可以解决这个问题,我在开发系统和目标系统上使用的stdc ++版本中有错误的macth ..我在两者上使用相同的版本,现在它可以工作..感谢你们的帮助