LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1364|回复: 12

请教编译软件的问题

[复制链接]
发表于 2006-3-14 11:04:43 | 显示全部楼层 |阅读模式
在编译软件源代码时总说确少这个缺少那个的,就是一些头文件和库文件,集中在GLIB,GTK,QT,GIMP等等,作为一新手,虽然知道问题所在,但不知道如何解决。
哪位能提供一下以上这些包的含义,作用,关系,如何安装,如何检查版本,如何设置?谢谢!:cool:
发表于 2006-3-14 11:58:28 | 显示全部楼层
具体哪一个?那些依赖包用URPMI都基本上可以装上,你可以在顶贴的那个站找。安装后会有说明的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-14 12:53:44 | 显示全部楼层
举个例子:
在编译d4x有以下输出:
[cyx@localhost ~]$ cd d4x-2.5.6/
[cyx@localhost d4x-2.5.6]$ ./configure
-----------------------------------------------------------------------------

                         d4x -- Web Downloader for X

Version: 2.5.6                                             chuchelo@krasu.ru
-----------------------------------------------------------------------------
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for g++... no
checking for c++... no
checking for gpp... no
checking for aCC... no
checking for CC... no
checking for cxx... no
checking for cc++... no
checking for cl... no
checking for FCC... no
checking for KCC... no
checking for RCC... no
checking for xlC_r... no
checking for xlC... no
checking for C++ compiler default output file name... configure: error: C++ compiler cannot create executables
See `config.log' for more details.
说c++编译器没有,上网得知c++可用gcc编译,在机器上rpm -qa|grep gcc
[cyx@localhost d4x-2.5.6]$ rpm -qa |grep gcc
gcc-cpp-4.0.1-5mdk
gcc-4.0.1-5mdk
libgcc1-4.0.1-5mdk
明明存在gcc啊?!不是缺少什么头文件库文件吧?
用urpmf:
[cyx@localhost d4x-2.5.6]$ urpmf --name gcc
libgcc1:libgcc1-4.0.1-5mdk.i586.rpm
gcc-cpp:gcc-cpp-4.0.1-5mdk.i586.rpm
gcc2.96-cpp:gcc2.96-cpp-2.96-0.83mdk.i586.rpm
gcc:gcc-4.0.1-5mdk.i586.rpm
gcc-java:gcc-java-4.0.1-5mdk.i586.rpm
gcc-c++:gcc-c++-4.0.1-5mdk.i586.rpm
gcc-gfortran:gcc-gfortran-4.0.1-5mdk.i586.rpm
gcc2.96:gcc2.96-2.96-0.83mdk.i586.rpm
gcc-colorgcc:gcc-colorgcc-4.0.1-5mdk.i586.rpm
gcc-doc:gcc-doc-4.0.1-5mdk.i586.rpm
gcc-doc-pdf:gcc-doc-pdf-4.0.1-5mdk.i586.rpm
gcc-gnat:gcc-gnat-4.0.1-5mdk.i586.rpm
gcc-objc:gcc-objc-4.0.1-5mdk.i586.rpm
gcc2.96-c++:gcc2.96-c++-2.96-0.83mdk.i586.rpm
gcc3.3-cpp:gcc3.3-cpp-3.3.6-2mdk.i586.rpm
cross-ppc-gcc-cpp:cross-ppc-gcc-cpp-3.4.3-6mdk.i586.rpm
cross-ppc64-gcc-cpp:cross-ppc64-gcc-cpp-3.4.3-6mdk.i586.rpm
gcc3.3:gcc3.3-3.3.6-2mdk.i586.rpm
cross-ppc-libgcc1:cross-ppc-libgcc1-3.4.3-6mdk.i586.rpm
cross-ppc64-libgcc1:cross-ppc64-libgcc1-3.4.3-6mdk.i586.rpm
cross-ppc-gcc:cross-ppc-gcc-3.4.3-6mdk.i586.rpm
cross-ppc64-gcc:cross-ppc64-gcc-3.4.3-6mdk.i586.rpm
gccxml:gccxml-0.7-3.20050805.3mdk.i586.rpm
gcc3.3-c++:gcc3.3-c++-3.3.6-2mdk.i586.rpm
gcc3.3-doc:gcc3.3-doc-3.3.6-2mdk.i586.rpm
gcc3.3-doc-pdf:gcc3.3-doc-pdf-3.3.6-2mdk.i586.rpm
gcc3.3-g77:gcc3.3-g77-3.3.6-2mdk.i586.rpm
这么些包,该装哪些呢?
难道全部都装上啊?:!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-14 13:21:58 | 显示全部楼层
例子二:
编译nmap的前端:
[cyx@localhost nmapfe]$ ./configure
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for pkg-config... /usr/bin/pkg-config
checking for GTK+ - version >= 2.0.0... no
*** Could not run GTK+ test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GTK+ is incorrectly installed.
configure: WARNING: NMAPFE WILL NOT BE BUILT -- BUT NMAP SHOULD STILL WORK
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
configure: creating ./config.status
config.status: creating Makefile
说没有gtk+
[cyx@localhost nmapfe]$ rpm -qa|grep gtk+
libgtk+2.0_0-2.8.3-4mdk
libgtk+1.2-1.2.10-41mdk
gtk+2.0-2.8.3-4.2.20060mdk
libgtk+-x11-2.0_0-2.8.3-4mdk

gtk+2.0-2.8.3-4.2.20060mdk,明明存在。肯定是还缺少什么东东。但问题还是我应该装什么东东呢,好像又绕回到上个帖子了。嘿嘿!:ask
回复 支持 反对

使用道具 举报

发表于 2006-3-14 13:33:52 | 显示全部楼层
沒有devel的rpm....
回复 支持 反对

使用道具 举报

发表于 2006-3-14 13:52:46 | 显示全部楼层
devel 是开发包。编译软件是缺的通常是此类 devel 包。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-14 17:11:14 | 显示全部楼层
根据楼上的提示,安装libgtk+2.0_0-devel,也不知道是不是这个包?
[root@localhost cyx]# urpmi libgtk+2.0_0-devel
为了满足依赖关系,将安装下列19个软件包(114 MB):
glib-gettextize-2.8.1-1mdk.i586
libatk1.0_0-devel-1.10.1-1mdk.i586
libcairo2-devel-1.0.0-8mdk.i586
libexpat0-devel-1.95.8-1mdk.i586
libfontconfig1-devel-2.3.2-5mdk.i586
libfreetype6-devel-2.1.10-9.1.20060mdk.i586
libgdk_pixbuf2.0_0-devel-2.8.3-4.2.20060mdk.i586
libglib2.0_0-devel-2.8.1-1mdk.i586
libgtk+2.0_0-devel-2.8.3-4.2.20060mdk.i586
libpango1.0_0-devel-1.10.0-3mdk.i586
libpng3-devel-1.2.8-1mdk.i586
libxorg-x11-6.9.0-5.2.20060mdk.i586
libxorg-x11-devel-6.9.0-5.2.20060mdk.i586
libxpm4-devel-3.4k-31mdk.i586
xorg-x11-6.9.0-5.2.20060mdk.i586
xorg-x11-75dpi-fonts-6.9.0-5.2.20060mdk.i586
xorg-x11-server-6.9.0-5.2.20060mdk.i586
xorg-x11-xfs-6.9.0-5.2.20060mdk.i586
zlib1-devel-1.2.3-1mdk.i586
这样好了吗?(是(Y)/否(n))[是]y
全部安装了,再去编译,成功!
感谢楼上各位!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-14 18:41:04 | 显示全部楼层
之前装了gtk+2.0和相应的开发包,现在又装了gtk+1.2和开发包,两者会不会冲突?
前几天遇到这样的问题,在编译时缺少libstdc.so.5文件,用whereis查得/usr/lib/下有一文件libstdc.so.6,就做了个链接,结果程序运行错误,上网得知,两个库不兼容。
现在我也担心gtk+2.0和gtk+1.2是不是兼容,如若兼容的话,那有为什么编译时要求gtk+1.2,我明明装了gtk+2.0啊,难道它自己检测不到吗?
回复 支持 反对

使用道具 举报

发表于 2006-3-14 18:54:18 | 显示全部楼层
gtk+1.2 和 gtk+2.0 不兼容 , 但是也没有冲突.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-14 19:04:31 | 显示全部楼层
果然出问题了:
编译xmms时要求gtk+1.2,给 装上,
[root@localhost xmms-1.2.10]# rpm -qa |grep gtk
libgtk-linux-fb-2.0_0-2.4.14-5mdk
libgtkhtml2_0-2.6.3-3mdk
libgtk+2.0_0-2.8.3-4mdk
libgtk+1.2-1.2.10-41mdk
gtkdialogs-2.1-1mdk
libgtk+1.2-devel-1.2.10-41mdk
gtk+2.0-2.8.3-4.2.20060mdk
libgtk+2.0_0-devel-2.8.3-4.2.20060mdk
libgtk+-x11-2.0_0-2.8.3-4mdk
gtk-engines-0.12-9mdk
这是结果,gtk+1.2和gtk+2.0的都装上了,
编译xmms,configure正常通过,make时显示
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../../xmms -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -D_REENTRANT -I/usr/X11R6/include -I../../intl -I../.. -g -O2 -Wall -Wpointer-arith -finline-functions -ffast-math -funroll-all-loops -MT ir.lo -MD -MP -MF .deps/ir.Tpo -c ir.c  -fPIC -DPIC -o ir.lo
ir.c:19: error: static declaration of 'keepGoing' follows non-static declaration
ir.h:53: error: previous declaration of 'keepGoing' was here
ir.c:22: error: static declaration of 'irapp_thread' follows non-static declaration
ir.h:52: error: previous declaration of 'irapp_thread' was here
make[3]: *** [ir.lo] 错误 1
make[3]: Leaving directory `/home/cyx/xmms-1.2.10/General/ir'
make[2]: *** [all-recursive] 错误 1
make[2]: Leaving directory `/home/cyx/xmms-1.2.10/General'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/home/cyx/xmms-1.2.10'
make: *** [all] 错误 2
好像是说没gtk+1.2的静态链接库,但上网查了,没什么静态链接库啊。
难道gtk+1.2和gtk+2.0真的不能装在一起,真的会冲突?还是其他的原因?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表