Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';无法解析共享库中的符号,但未给出符号名称_C_Linux - Fatal编程技术网

Can';无法解析共享库中的符号,但未给出符号名称

Can';无法解析共享库中的符号,但未给出符号名称,c,linux,C,Linux,我对此进行了搜索,但没有找到这个特定问题的任何答案。我有一个应用程序可以链接几个共享对象。它抱怨无法解析符号,但它为它试图解析的符号名称提供了一个空字符串: <path_to_application_name>: symbol '': can't resolve symbol in lib '<path_to_a_specific_shared_object>' :符号“”:无法解析库“”中的符号 正如我所提到的,这个应用程序链接到几个共享对象,但它专门调用了一个,在

我对此进行了搜索,但没有找到这个特定问题的任何答案。我有一个应用程序可以链接几个共享对象。它抱怨无法解析符号,但它为它试图解析的符号名称提供了一个空字符串:

<path_to_application_name>: symbol '': can't resolve symbol in lib '<path_to_a_specific_shared_object>'
:符号“”:无法解析库“”中的符号
正如我所提到的,这个应用程序链接到几个共享对象,但它专门调用了一个,在其中寻找符号。GDB没有提供任何额外的信息,至少我知道如何使用它。有没有办法从这个错误消息中提取更多信息?我将能够调试,如果我知道它实际上在寻找什么


提前谢谢

所以前几天我发现了问题。首先,我会采取怯懦的方式来挽回面子,并注意到我从其他人那里继承了特定的项目,这也是我花了比我希望的时间更长的部分原因


首先,我试图将一个现有的.so的新版本集成到这个项目中,它基本上只包含了我们需要的一些额外的API调用。当然,这恰好是在错误消息中调用的库。显然,.so本身调用第三个库中定义的函数,该库本身静态链接到调用.so的原始应用程序。共享对象中已经存在以这种奇怪方式链接的API调用,在我着手这个项目之前,它们工作得很好。这可能是让我失望的原因;这些额外的电话似乎破坏了一切。然而,它工作的原因是因为有第二个.so,它显然也有在第一个.so中引用的函数的定义,并且实际上是在静态链接库中定义的。新的API调用没有共享这种安排。所以当我尝试添加第一个.so的新版本时,这些新API调用从未(错误地)在第二个.so中定义。不用说,我就这样做了一些手术,现在一切都好了。感谢所有人的帮助和建议。

这是应用程序中的错误,而不是链接/加载问题。加载程序消息不会包含有问题的库名称,并且将采用不同的格式。谢谢;我将继续讨论这个问题。您是否尝试过使用跟踪来确定调用了哪些函数?这会在第一时间告诉你它在哪里发生故障。这是假设你有内置的跟踪功能。不幸的是,它是一个嵌入式的盒子,而我没有访问斯特拉特的权限,这使得它很困难。我不熟悉嵌入式系统,但我猜您会有一个测试代码的环境。也许你可以通过模拟“断开”的动作来追踪电话。另一个可能有用的方法是使用
nm
命令列出所述库中的符号。如果没有太多列出的外部符号,那么这可能会给您一个线索,说明是哪一个导致了问题。