帮我看一下编译源代码包是出现的错误

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
每天睡多点
帖子: 42
注册时间: 2011-01-12 15:44

帮我看一下编译源代码包是出现的错误

#1

帖子 每天睡多点 » 2011-03-20 13:20

解压和进入解压出来的目录./configure都没问题,make的时候就是下面的错误,看不懂,请教了!


make all-recursive
make[1]: 正在进入目录 `/tmp/fcitx-3.6.3'
Making all in doc
make[2]: 正在进入目录 `/tmp/fcitx-3.6.3/doc'
make[2]: 没有什么可以做的为 `all'。
make[2]:正在离开目录 `/tmp/fcitx-3.6.3/doc'
Making all in xpm
make[2]: 正在进入目录 `/tmp/fcitx-3.6.3/xpm'
make[2]: 没有什么可以做的为 `all'。
make[2]:正在离开目录 `/tmp/fcitx-3.6.3/xpm'
Making all in lib
make[2]: 正在进入目录 `/tmp/fcitx-3.6.3/lib'
gcc -DHAVE_CONFIG_H -I. -I.. -c -O2 -fno-strength-reduce -fno-strict-aliasing -g -O2 -INONE -INONE -D_ENABLE_TRAY -INONE -INONE -INONE -Wall -MT FrameMgr.o -MD -MP -MF .deps/FrameMgr.Tpo -c -o FrameMgr.o FrameMgr.c
FrameMgr.c:29: fatal error: X11/Xlibint.h: 没有那个文件或目录
compilation terminated.
make[2]: *** [FrameMgr.o] 错误 1
make[2]:正在离开目录 `/tmp/fcitx-3.6.3/lib'
make[1]: *** [all-recursive] 错误 1
make[1]:正在离开目录 `/tmp/fcitx-3.6.3'
make: *** [all] 错误 2
头像
退避九舍
帖子: 742
注册时间: 2010-08-08 20:02
系统: Ubuntu 22.04

Re: 帮我看一下编译源代码包是出现的错误

#2

帖子 退避九舍 » 2011-03-21 18:36

没有找到 X11/Xlibint.h
退避九舍:富贵不能淫,贫贱不能移,威武不能屈:坚持ubuntu不动摇!
头像
hiphen
帖子: 803
注册时间: 2010-08-27 15:53

Re: 帮我看一下编译源代码包是出现的错误

#3

帖子 hiphen » 2011-03-21 21:28

一般缺少.h这种头文件,你要下载找到对应的“-dev”包
基础问题,请看入门手册http://people.ubuntu.com/~happyaron/udc-cn/lucid-html/

Acer aspire 4736G / Ubuntu 10.04LTS
Asus eeepc900 / Xandros
Nokia N900 / Maemo 1.2.12
头像
AutoXBC
帖子: 1744
注册时间: 2007-10-23 12:54

Re: 帮我看一下编译源代码包是出现的错误

#4

帖子 AutoXBC » 2011-03-21 21:53

代码: 全选

./configure
make
make install
这种老三句是常规意义上的步骤,不是所有软件都这样编译的。有些编译之前的工作要做,在 ubuntu 系统里,需要用这个命令准备编译环境。

代码: 全选

sudo apt-get build-dep fcitx
在软件目录中存在 autogen.sh 的话还应该在 configure 之前执行。

还有 fcitx 这种已经完全 debian 化的源码,可以直接生成 deb 包使用,不需要手动执行 make & make install。

所以在这里需要这样

代码: 全选

sudo apt-get build-dep fcitx
./autogen.sh
fakeroot debian/rules binary
头像
每天睡多点
帖子: 42
注册时间: 2011-01-12 15:44

Re: 帮我看一下编译源代码包是出现的错误

#5

帖子 每天睡多点 » 2011-03-23 18:22

但是源代码自带的说明文档是说用
./configure
make
make install
我还是试一试
sudo apt-get build-dep fcitx
./autogen.sh
fakeroot debian/rules binary :em06
头像
每天睡多点
帖子: 42
注册时间: 2011-01-12 15:44

Re: 帮我看一下编译源代码包是出现的错误

#6

帖子 每天睡多点 » 2011-03-24 9:07

AutoXBC 写了:

代码: 全选

./configure
make
make install
这种老三句是常规意义上的步骤,不是所有软件都这样编译的。有些编译之前的工作要做,在 ubuntu 系统里,需要用这个命令准备编译环境。

代码: 全选

sudo apt-get build-dep fcitx
在软件目录中存在 autogen.sh 的话还应该在 configure 之前执行。

还有 fcitx 这种已经完全 debian 化的源码,可以直接生成 deb 包使用,不需要手动执行 make & make install。

所以在这里需要这样

代码: 全选

sudo apt-get build-dep fcitx
./autogen.sh
fakeroot debian/rules binary


运行结果:
root@machine:~/桌面/fcitx-3.6.2# apt-get install build-dep fcitx
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
E: 未发现软件包 build-dep


查看软件目录有autogen.sh,所以
root@machine:~/桌面/fcitx-3.6.2# ./autogen.sh
./autogen.sh: 3: aclocal: not found


我是不是缺少什么编译需要的软件包,我只安装了build-essential,请各位前辈指点一下!!
头像
每天睡多点
帖子: 42
注册时间: 2011-01-12 15:44

Re: 帮我看一下编译源代码包是出现的错误

#7

帖子 每天睡多点 » 2011-03-25 13:02

说说今天所做的:
按照“退避九舍”的建议:
把libx11-dev装上,再重新编译看看,提示:fatal error:X11/xpm.h:没有那个文件或目录
尝试安装xlibs-dev
更新一下源---命令安装提示找不到软件包,这次是xlibs-dev,很多人说:这个包在源里没有,而且很难找,但是可以
用xlibs-static-dev代替xlibs-dev ,源里面绝对有xlibs-static-dev。

试了一下:
现在没有可用的软件包 xlibs-static-dev,但是它被其他的软件包引用了。
libxfontp-dev libxfont-dev取代了它。

安装上面这些包,./configure make还是不行,提示:
Traywindow.h:5:21 fatal error:X11/xpm.h:没有那个文件或目录
又安装了:libxtst-dev
结果一样.... :em20
头像
每天睡多点
帖子: 42
注册时间: 2011-01-12 15:44

Re: 帮我看一下编译源代码包是出现的错误

#8

帖子 每天睡多点 » 2011-03-25 13:03

虽然还没有成功,但是感觉学到了点东西 :em01
头像
AutoXBC
帖子: 1744
注册时间: 2007-10-23 12:54

Re: 帮我看一下编译源代码包是出现的错误

#9

帖子 AutoXBC » 2011-03-27 20:08

之所以出现一堆错误,就是没有执行最开始需要的一句命令。

应该是

代码: 全选

sudo apt-get build-dep fcitx
不是

代码: 全选

apt-get install build-dep fcitx
还有没事不要 su 到 root 里,这不合规范,编译软件需要提权时有 fakeroot 这个命令。

细说一下 build-dep 是怎么工作的。debian 和 ubuntu 的开发者认为用户都是正常人,不是机器,也不是无所不知,他们仅仅需要编译一个软件,至于编译这个软件需要创建什么样的编译环境根本就不关心。我们需要一个人类友好的命令来自动的一次性的彻底的完成这个工作,于是有了 build-dep。

他们首先在源中建立了描述文件 fcitx_3.6.3-1.dsc,到这个地址可以看到。
http://archive.ubuntu.com/ubuntu/pool/u ... .6.3-1.dsc

文件中声明了编译 fcitx 3.6.3 需要的全部组件,就是这一句

代码: 全选

Build-Depends: debhelper (>= 7.0.50~), libx11-dev, libxft-dev, x11proto-core-dev, libxpm-dev, automake, autoconf, libxtst-dev
build-dep 就是读取这个位置,然后一切都交给系统自己处理。所以用任何系统首要的一条是要学会偷懒,并找出开发者提供好的偷懒方法。自己当然也可以介入细节,但这个过程不是盲目的,要顺着开发者的思路介入,这样学起来才会有条理,也不会感到系统设计的莫名其妙。
头像
每天睡多点
帖子: 42
注册时间: 2011-01-12 15:44

Re: 帮我看一下编译源代码包是出现的错误

#10

帖子 每天睡多点 » 2011-03-29 23:24

代码:
sudo apt-get build-dep fcitx
./autogen.sh
fakeroot debian/rules binary
可以编译出一个deb包。
谢谢 AutoXBC这么详细的解释!
“还有没事不要 su 到 root 里,这不合规范,编译软件需要提权时有 fakeroot 这个命令。”这个最近我也在书上看到过,编译最好不要有root,防止一些恶意的代码破坏系统。
oreatial
帖子: 1
注册时间: 2011-05-09 10:33

Re: 帮我看一下编译源代码包是出现的错误

#11

帖子 oreatial » 2011-05-09 10:34

autoconf automake autotools-dev debhelper html2text intltool
libcairo-script-interpreter2 libcairo2-dev libdbus-1-dev libexpat1-dev
libfontconfig1-dev libfreetype6-dev libglib2.0-dev libice-dev libltdl-dev
libmail-sendmail-perl libpango1.0-dev libpixman-1-dev libpng12-dev
libpthread-stubs0 libpthread-stubs0-dev libsm-dev libsys-hostname-long-perl
libtool libx11-dev libxau-dev libxcb-render0-dev libxcb-shm0-dev libxcb1-dev
libxdmcp-dev libxft-dev libxrender-dev m4 po-debconf x11proto-core-dev
x11proto-input-dev x11proto-kb-dev x11proto-render-dev xtrans-dev
需要这些安装包 检查一下
头像
AutoXBC
帖子: 1744
注册时间: 2007-10-23 12:54

Re: 帮我看一下编译源代码包是出现的错误

#12

帖子 AutoXBC » 2011-05-10 17:00

楼上可以看看我 9 楼的解释,你这个方向不对。
回复