“未解决的文本符号” - 如何找到正确的库

请原谅的新手问题,我的C是非常非常生疏。 试图构建起http://www.leftfield.org/~dd/sw.html xrunclient,在IRIX64,我面临着:

LD32:ERROR:33:未解决的文本符号“XOpenDisplay”

我想,这是因为它无法找到正确的库,但它找到头文件毫无怨言。 我怎样才能识别哪些图书馆有定义,这样我可以确保它在库路径,常规?

--------------解决方案-------------

教人以渔:

nm -o /usr/lib/lib*.a 2>/dev/null |
grep XOpenDisplay |
grep -w T

这样做是什么

  1. 要求在所有在库的符号/usr/lib 。 (在64位系统上,你可能需要检查/usr/lib64 )的-o选项打印不仅象征,而且它从文件的名称。
  2. 抓住你关心的符号有关XOpenDisplay
  3. grep的文本部分,孤独的那个符号定义T的是如何nm(1)信号中的文字部分的定义。 可能我也试过grep -w [TD]获取文本或数据。

答案是有点令人惊讶:

/usr/lib/libSDL.a:SDL_x11dyn.o:00000380 T XOpenDisplay
/usr/lib/libX11.a:OpenDis.o:00000420 T XOpenDisplay

我不知道是什么-lSDL是(如果我愿意我会谷歌),但有-lX11大如生命。

现在,你可以找到你想要的任何缺少的符号:-)

答案是libX11.so - 它包含了基本的Xlib程序,你可以告诉这是一个Xlib的程序,因为它与普通的“X”开头。 如果它开始的“XT”,那么你知道它是在对XT部件集的方法。

我不相信这个库的名字在15年以上发生了变化,所以在书中所示的编译命令应该为你工作。 我认为,(当然,这意味着你必须有可用的手册页,而不是每个人都一样)库名称也列在手册页在X程序。

除此之外,grep的可能是你最好的选择,虽然整个/ usr / lib目录grepping是要两个引用露面的功能和申报,所以这可能是没有用的。 还有一个命令行实用程序(你是在Linux上运行,对吧?),将显示一个.so,这可能也是有用的内容。

编辑:嗯,IRIX不是Linux; 没有注意到,在第一次读。 我认为最好的办法将是寻找联机帮助页。

分类:C# 时间:2015-03-14 人气:0
本文关键词: C#编译,X11
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.559 (s). 10 q(s)