链接到应用程序期间共享库未定义的引用 我的一个基于C++的应用程序,我把我的一些代码作为共享LIB(C++开发),我连接到我的测试应用程序来访问共享的LIB的服务。当我在linux上工作时,一切都很好。。因为我为基于arm的嵌入式系统开发了这个。我试图在linux平台上使用arm交叉工具链设置交叉编译我的共享库和应用程序。我已经编写了一个makefile来创建一个共享库并编译我的应用程序。 当我进行交叉编译时,会创建我的库,但在链接到应用程序时,它会出现以下错误

链接到应用程序期间共享库未定义的引用 我的一个基于C++的应用程序,我把我的一些代码作为共享LIB(C++开发),我连接到我的测试应用程序来访问共享的LIB的服务。当我在linux上工作时,一切都很好。。因为我为基于arm的嵌入式系统开发了这个。我试图在linux平台上使用arm交叉工具链设置交叉编译我的共享库和应用程序。我已经编写了一个makefile来创建一个共享库并编译我的应用程序。 当我进行交叉编译时,会创建我的库,但在链接到应用程序时,它会出现以下错误,linux,arm,cross-compiling,Linux,Arm,Cross Compiling,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 所以我认为这就是

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-L/usr/local/cross/arm/arm none-linux-gnueabi/libc/armv4t/usr/lib/libstdc++.a中链接静态库,它会编译,但如果我链接共享arm-none-linux-gnueabi/libc/armv4t/usr/lib/libstdc++,那么它会抛出相同的错误

<>如果我使用C++,这不是默认的链接吗?
有人能帮我解决这个问题吗。

我能解决这个问题,我在开发系统和目标系统上使用的stdc++版本中有mis macth。。我在两者上都使用了相同的版本,现在它可以工作了。。感谢大家的帮助

您的实际完整链接命令是什么?这些是我包含的libs=-pthread-lcurl-lssl/usr/local/cross/arm/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libstdc++。所以CXX=/pathtarmg++$(CXX)$(CFLAGS)-o$@$$+$(CFLAGS)$(INC DIR)(libs)尝试添加库路径。它是
-L/usr/local/cross/arm/arm none-linux-gnueabi/libc/armv4t/usr/lib
。那里可能还有其他共享库。您只指定libstdc++.so。这些库必须与目标匹配(或至少兼容)。