编译xorg7.0总结



昨晚一夜未睡,总算搞定xorg7.0以上,执行startx看到了钟啊,命令窗口。明天新年了,在2006年最后一天留点记录,写下昨晚编译xorg的一些总结。
在lfs之后是一个纯正的基本系统,如果想要桌面首先就得考虑X,根据gentoo发觉想跑Beryl的话7.0以上的xorg能够得到较好的效果。(本 人显卡N卡)。所以死活就选了这个xorg7.0,其间总结恳定有很多问题。请大家多多指教,编译其间主要参考了cblfs的 wilk。地址: http://cblfs.cross-lfs.org/index.php/Xorg7/Intro
1、必要的工具:
进入lfs之前:得保证你的lfs能够网通,和两个网络工具links和wget.(可参见blfs).
2、必要的准备:
虽然能够在编译xorg其间指定参数,但这个东东量太大,所以建立一个好的环境是一个好的办法。看了blfs的shell的起动文件主要有 /etc/profile,/etc/bashrc,~/.bash_profile和~/.bashrc.后面三个都是一些个性化的东西,为了使一些变 量不要发生异想不到的变化,在blfs还没完全建立起来,我们就暂不要后面的三个。主要初始化/etc/profile.d目录下的文件就行了。这里可以 直接复制profile文件,特别注意下里面的一个for循环:如下不要弄错了。
for script in /etc/profile.d/*.sh ; do
if [ -r $script ] ; then
. $script
fi
done

# Now to clean up
因为我不需要多库,现在我们在这里 http://cblfs.cross-lfs.org/index.php/Bash_Startup_Files复制这几个文件
到/etc/profile.d/里。有: 05-i18n.sh, 10-path.sh, 10-xdg.sh, 15-xorg.sh, 50-dircolors.sh, 50-history.sh, 50-prompt.sh, 50-readline.sh, 50-umask.sh,为了得到一个好的彩色终端,可把50-prompt.sh内容用#注掉。并在profile文件加上如下一些转意符。这样眼睛才 不累;附下:
/033[30m :黑色,/033[31m :红色,/033[32m :绿色,/033[33m :橙色,/033[34m :蓝色,/033[35m :品红色,/033[36m :青色,37是白色了等。
好了,重新登陆使设置生效。
3、最后的准备:
因为单个的包太多,建立如下一些目录便于操作:
cd / && mkdir xc && cd /xc
install -dv {app,data,doc,driver,font,lib,proto,util}
设一个自始自终的变量,执行:
export XORG_CONFIG="--prefix=$XORG_PREFIX --sysconfdir=/etc --localstatedir=/var"
现在必要的检查:
echo $XORG_PREFIX
echo $XORG_CONFIG
echo $ACLOCAL
查看输出的结果是否是预期的结果。
编辑/etc/ld.so.conf 加入: /usr/X11R7/lib
执行: ldconfig
安装时按此顺序进行:解决依赖。
utility macros , protocol headers,utilities, libraries,libdrm,mesalib,xbitmaps,apps,date,fonts,xserver,drivers,xterm,rman
其中有几个目录需要一些依赖的包,不过不多一共也就四五个。
4、开始安装:
a。单个的包安装
在另一个终端用links进入上面的各个连接页进行下载,小提示这几天网络不好。进入links时可按Esc键弹出主菜单去设一个代理。然后在另一个编译终端把下载的包mv 到/xc/下的相应目录解压进入,然后执行
./configure $XORG_CONFIG && make && make install
(有几个包不需要make)。
b。多包的安装。(我们这里采用半自动的进行,不然要累死)
如象apps里面包几十个不可能全部手动,首先我们进入:
cd /xc
wget http://anduin.linuxfromscratch.org/s...t/app-7.1.wget
先把apps要的包清单下回来。
cd apps
wget -B http://xorg.freedesktop.org/releases/individual/app/ -i ../app-7.1.wget
再根据清单把这些包下到apps目录。先进行全部解压:用个for循环:
for i in *.tar.bz2; do
tar xvf $i;
done
这时如有补丁可进入相应的目录打补丁,补丁不多,不用循环了。然后回到apps目录进行安装如下:
for dir in `sed "s/.tar.bz2//g" ../app-7.1.wget`; do
cd ${dir} &&
./configure $XORG_CONFIG &&
make &&
make install &&
cd ..;
done
我安装时几乎就采用了这两种方法。安装时先要在此页查一下有无依包得先安装(如没装的话) 如这个app得先装:xbitmap,libpng,mesalib,freetype.
5、注意的事项:
Mesa把下载下来的包解压编译完后不要删掉原码,最后编译Xserver要mesa的源码。另Drivers里有不需要的可以把相应的从下回来的清单driver-7.1.wget中删掉。
6、出现的问题:
编译mesademos没通过,出错我没管他,这样象glxinfo glxgears命令无法用了。最后用Xorg -configure无法自动生成xorg.conf.new配置文件。执行后就黑屏。我只得从gentoo下cp 了一个xorg.conf过来,进行了必要的修改。我后 X -config xorg.conf正常。移到/etc/X11/里。startx好象一切都正常,鼠标,键盘一切都能用。就出现了开始的钟啊,xterm 等。另如果家目录有xorg.conf的话startx首先用的是家目录的。必须删掉才用的是/etc/X11/xorg.conf
 
<think>嗯,用户想了解如何编译和调试Xorg。首先,我得先回忆一下自己之前处理Xorg的经验。Xorg是X Window系统的开源实现,常用于Linux和Unix系统。编译和调试它可能会比较复杂,因为涉及到底层的图形驱动和系统组件。 首先,我需要确定用户的操作系统环境。通常,Xorg在Linux上编译,所以可能需要安装一些依赖库和工具。比如,构建工具如gcc、make,还有开发包如xutils-dev、libtool等。可能还需要mesa的开发文件,因为Xorg和Mesa关系密切。不过不同的发行版包名可能不同,需要提醒用户根据他们的系统来安装。 接下来是获取源代码。Xorg的源代码通常可以从官网或者Git仓库获取。用户可能需要使用git clone来下载最新的代码,或者下载稳定版的tar包。这一步需要确保用户有足够的权限和网络连接。 然后是配置步骤。Xorg使用autotools,所以通常的流程是运行autogen.sh或者configure脚本。这里可能会有很多配置选项,比如指定安装路径,启用或禁用某些模块。用户可能需要根据他们的需求调整这些选项,比如开启调试符号,这样编译后的二进制文件才能被gdb调试。这里需要提醒用户使用CFLAGS="-g -O0"来禁用优化并加入调试信息。 编译过程中可能会遇到依赖问题,比如缺少某个库的头文件。这时候需要用户安装对应的开发包。如果编译出错,错误信息通常会提示缺少什么,用户需要根据提示安装相应的包。这一步可能需要耐心,因为依赖关系可能比较复杂。 安装步骤通常是用make install,但需要小心安装路径,避免覆盖系统自带的Xorg。可能建议用户安装到自定义目录,比如/usr/local/xorg,这样不会影响系统现有的Xorg。不过需要注意环境变量,比如PATH和PKG_CONFIG_PATH,可能需要调整,让系统找到新安装的版本。 调试部分,用户可能需要使用gdb来跟踪问题。如何启动Xorg的调试会话呢?Xorg通常以root权限运行,但用gdb附加进程可能不太方便。或许建议用户在一个测试环境中运行Xorg,使用startx命令,并传递参数让Xorg在前台运行,这样更容易捕捉输出和调试信息。此外,Xorg的日志文件,通常是/var/log/Xorg.0.log,里面会有详细的错误信息,需要提醒用户查看这里是否有线索。 可能还需要提到Xephyr,这是一个嵌套的X服务器,可以在现有的X会话中运行另一个X服务器,方便调试而不影响主会话。这样可以避免重启或切换tty,提高调试效率。 另外,调试Xorg模块时,可能需要单独编译某个驱动或扩展,比如显卡驱动。这时候需要知道如何单独编译和替换模块,而不必重新编译整个Xorg。这部分可能需要进入模块目录,进行配置、编译和安装。 用户可能遇到的问题包括编译错误、链接错误、运行时崩溃或功能异常。需要建议他们在遇到问题时,先检查依赖是否满足,配置选项是否正确,日志文件中的错误信息,以及使用gdb回溯跟踪段错误。 最后,可能还要提到社区资源,如Xorg的邮件列表、论坛或Wiki,遇到棘手问题时寻求帮助。同时,提供一些常用命令示例,让用户能够复制粘贴,减少操作失误。 总结一下,步骤大概是:安装依赖、获取源码、配置、编译、安装、调试。每个步骤中可能遇到的问题和解决方法需要详细说明,确保用户能够逐步跟进,不会卡在某个环节。还要注意安全,避免因错误安装导致系统无法启动,建议在虚拟机或测试环境中操作。</think>以下为编译和调试Xorg的逐步指南: --- ### 一、准备工作 1. **安装依赖** ```bash # Debian/Ubuntu sudo apt install git build-essential automake libtool pkg-config \ xutils-dev xserver-xorg-dev libpixman-1-dev libdrm-dev \ mesa-common-dev libglu1-mesa-dev # Fedora sudo dnf install git gcc make autoconf automake libtool \ xorg-x11-server-devel pixman-devel libdrm-devel \ mesa-libGL-devel ``` 2. **获取源码** ```bash git clone git://anongit.freedesktop.org/xorg/xserver cd xserver ``` --- ### 二、编译配置 1. **生成配置脚本** ```bash ./autogen.sh --prefix=/usr/local/xorg \ --enable-debug \ --enable-xorg \ --disable-docs \ CFLAGS="-g -O0" ``` 关键参数说明: - `--prefix`: 指定自定义安装路径 - `--enable-debug`: 启用调试符号 - `CFLAGS="-g -O0"`: 禁用优化,保留完整调试信息 2. **处理依赖验证** 若出现`configure: error: Package requirements (...) not met`错误,需通过包管理器安装对应开发包 --- ### 三、编译与安装 ```bash make -j$(nproc) # 多线程编译 sudo make install # 安装到指定路径 ``` --- ### 四、调试技巧 #### 1. 前台启动调试 ```bash # 在独立X会话中调试 startx /usr/local/xorg/bin/Xorg :1 -config dummy.conf -noreset -keeptty ``` - 使用`dummy.conf`测试配置(需提前准备) - `-keeptty`保留控制台输出 #### 2. 使用GDB调试 ```bash gdb --args /usr/local/xorg/bin/Xorg :1 -config dummy.conf (gdb) break SomeCriticalFunction # 设置断点 (gdb) run # 启动X服务器 ``` #### 3. 日志分析 查看详细错误记录: ```bash tail -f /var/log/Xorg.0.log | grep "(EE)" # 过滤错误信息 ``` --- ### 五、常用调试工具 1. **Xephyr嵌套服务器** ```bash Xephyr -ac -screen 1280x720 :2 & # 在Display :2创建嵌套会话 DISPLAY=:2 your_window_manager & # 在新会话中启动窗口管理器 ``` 2. **Valgrind内存检测** ```bash valgrind --leak-check=full /usr/local/xorg/bin/Xorg :1 ``` --- ### 六、模块开发调试 1. **单独编译驱动** ```bash cd xserver/hw/xfree86/drivers/modesetting make clean && make sudo cp modesetting_drv.so /usr/local/xorg/lib/xorg/modules/drivers/ ``` 2. **动态加载模块** 在`xorg.conf`中指定: ```conf Section "Module" Load "glx" EndSection ``` --- ### 七、故障排查 - **段错误**:通过`coredumpctl`获取崩溃堆栈 - **黑屏问题**:检查GPU驱动兼容性,尝试`-novtswitch`参数 - **输入设备失效**:使用`xinput list`验证设备识别 --- ### 八、参考资料 - 官方文档:https://www.x.org/wiki/Development/Documentation/ - 调试指南:https://www.x.org/wiki/DeveloperInfo/ - 邮件列表:xorg@lists.x.org 通过上述步骤可系统性定位Xorg相关问题,建议首次操作在虚拟机环境中测试。遇到具体问题时,可结合`strace`和`dmesg`输出进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值