glamor 发表于 2008-09-20 20:26

关于fedora X11R6问题 编译不通

我在编译一个程序的时候,出现这个错误
/usr/bin/ld: cannot find -lX11
pgf90-Fatal-linker completed with exit code 1
应该是这个程序依赖于x11R6 但是fedora改变了这个目录,有哪位大哥知道改到哪去吗。

我把 usr/lib 目录下的文件拷到/usr/X11R6/lib 也不行。
编译的最后是pgf90 -o rams-6.0-opt rammain.o -v -Wl,-static -Wl,-zmuldefs rams-6.0-opt.a \
        ./utils/libutils-2.4-opt.a -L/usr/local/ncarg/lib -lncarg -lncarg_gks -lncarg_c -L/usr/X11R6/lib -lX11 -lpthread -ldl -lc -lgcc_eh -lXau -lXdmcp-L/usr/X11R6/lib -lX11 -L/home/yang/rams/hdfs/lib-lhdf5 -lz -lm

/usr/bin/ld /usr/lib/crt1.o /usr/lib/crti.o /opt/pgi/linux86/7.1-6/lib/trace_init.o /usr/lib/gcc/i386-redhat-linux/4.1.2/crtbegin.o /opt/pgi/linux86/7.1-6/lib/f90main.o -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /opt/pgi/linux86/7.1-6/lib/pgi.ld -L/usr/local/ncarg/lib -L/usr/X11R6/lib -L/usr/X11R6/lib -L/home/yang/rams/hdfs/lib -L/opt/pgi/linux86/7.1-6/lib -L/usr/lib -L/usr/lib/gcc/i386-redhat-linux/4.1.2 rammain.o -static -zmuldefs rams-6.0-opt.a ./utils/libutils-2.4-opt.a -lncarg -lncarg_gks -lncarg_c -lX11 -lpthread -ldl -lc -lgcc_eh -lXau -lXdmcp -lX11 -lhdf5 -lz -lm -rpath /opt/pgi/linux86/7.1-6/lib -o rams-6.0-opt -lpgf90 -lpgf90_rpm1 -lpgf902 -lpgf90rtl -lpgftnrtl -lpgsse1 -lpgsse2 -lnspgc -lpgc -lrt -lpthread -lm -lgcc -lc -lgcc /usr/lib/gcc/i386-redhat-linux/4.1.2/crtend.o /usr/lib/crtn.o
/usr/bin/ld: cannot find -lX11
pgf90-Fatal-linker completed with exit code 1

cjaizss 发表于 2008-09-20 20:41

你没有安装X11库

glamor 发表于 2008-09-20 22:46

X11库 不是默认安装的嘛?
-lx11他是不是再找libx11.so .6?
如果没有安装,怎么安装呢,我是fedora 8.

freearth 发表于 2008-09-20 22:57

所谓的库,其实是X11对应的头文件。
找一找类似libx11-dev之类的东西。。。

原帖由 glamor 于 2008-9-20 22:46 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
X11库 不是默认安装的嘛?
-lx11他是不是再找libx11.so .6?
如果没有安装,怎么安装呢,我是fedora 8.

glamor 发表于 2008-09-20 23:09

对,我是骑着驴找驴,看看他的文档,到底把x11库 放在哪去了,也有可能没装,不过我是把开发库都装进去了?

要是有x11r6/lib各个库的介绍就好了,也知道软件在时候的时候带的类似 -lx11到底是在找哪个文件。

cjaizss 发表于 2008-09-20 23:34

回复 #4 freearth 的帖子

.........a文件,so文件

cjaizss 发表于 2008-09-20 23:52

原帖由 glamor 于 2008-9-20 23:09 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
对,我是骑着驴找驴,看看他的文档,到底把x11库 放在哪去了,也有可能没装,不过我是把开发库都装进去了?

要是有x11r6/lib各个库的介绍就好了,也知道软件在时候的时候带的类似 -lx11到底是在找哪个文件。
在你的安装盘里找找看

freearth 发表于 2008-09-21 09:25

看错了,我以为是由于没有头文件的问题。原来是ld报的错。

原帖由 cjaizss 于 2008-9-20 23:34 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
.........a文件,so文件

glamor 发表于 2008-09-21 09:39

值得详细解释一下的是-l选项,它指示gcc去连接库文件david.so。Linux下的库文件在命名时有一个约定,那就是应该以lib三个字母开头。由于所有的库文件都遵循了同样的规范,因此在用-l选项指定链接的库文件名时可以省去lib三个字母。也就是说gcc在对-l david进行处理时,会自动去链接名为libdavid.so的文件。

Linux下的库文件分为两大类,分别是动态链接库(通常以.so结尾)和静态链接库(通常以.a结尾),两者的差别仅在于程序执行时所需的代码是在运行时动态加载的,还是在编译时静态加载的。默认情况下,gcc在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库。


我的/usr/lib下 只有libx11.so但没有libx11.a 但是看上述一句话应该是只需要libx11.so就可以了,难道这个程序优先使用静态链接库?
先不管了直接立一个名为/usr/local/lib/libX11.a的链接:
ln -s /usr/X11R6/lib/libX11.so /usr/local/lib/libX11.a


看错了,我以为是由于没有头文件的问题。原来是ld报的错
ld报错 是什么意思,麻烦大哥给说下。

glamor 发表于 2008-09-21 10:30

不行啊,出现这个错误
/usr/bin/ld: attempted static link of dynamic object `/usr/X11R6/lib/libX11.a'
pgf90-Fatal-linker completed with exit code 1
好像必须是libX11.a才可以,现在找不到这个东西,freearth 和cjaizss 大哥能否给传个。
给指条道路去找也可以。
页: [1] 2
查看完整版本: 关于fedora X11R6问题 编译不通