系统复杂了,什么毛病都会出,最近在使用Gentoo和Debian的过程中,都出现了其他程序能正常使用ibus输入法,偏偏Emacs不能的情况。
不过最终都被征服了。解决方案放在这里,备查。

  • 英文系统中使用ibus。中文系统请无视。英文系统emacs需要设置locale的支持。
    不管是Gentoo还是Debian,如果无法正确调出ibus输入法,即ibus不能将emacs识别为输入窗口,请检查环境变量LC_CTYPE是否为zh_CN.utf8.
    可以使用如下命令,执行emacs。至少经过这一步,ibus就能将emacs识别为输入窗口了。
$LC_CTYPE=zh_CN.utf8 emacs

##或者直接增加一个小脚本启动emacs

#!/bin/sh
export LC_CTYPE=zh_CN.utf8
/usr/bin/emacs $*
  • 在emacs中,ibus有输入框,能显式备选汉字,但无法输入到emacs界面中。我在Gentoo和Debian中都遇到了这个问题。

Gentoo: 当时按照参考1,稀里糊涂的安装了几个字体之后问题解决。

[ebuild  N    ] media-fonts/font-adobe-75dpi-1.0.0  USE="X nls" 0 kB
[ebuild  N    ]  x11-apps/bdftopcf-1.0.2  USE="-debug" 0 kB
[ebuild  N    ]  media-fonts/font-alias-1.0.1  USE="-debug" 0 kB
[ebuild  N    ]  media-fonts/font-util-1.1.1  USE="-debug" 0 kB

Debian: 若在Debian上采用英文系统,多半不能自动增加中文的locale,就是因为没有中文的locale。执行如下命令,增加对zh_CN.utf8 locale的支持即可。

$ sudo dpkg-reconfigure locales
  • 若以上方案都不能解决你的问题,那推荐你试试Ibus Mode

 

 

今天需要对Debian中的默认启动程序做配置,就顺便重新认识一下Linux下的启动过程,并总结对比Debian和Gentoo。

Init创世纪!

再来回顾一下Linux PC的启动过程

  1. BIOS检测硬件,并查找硬盘MBR(Master Boor Record)上的指令
  2. MBR指向GRUB,LILO之类的boot loader
  3. Grub查询载入操作系统内核的位置,并载入指定的内核
  4. 内核载入之后启动init进程。
  5. init启动脚本/etc/rc.d/rc.sysinit, 接着根据运行级别不同,启动指定的进程。

init是系统中所有进程的父进程,它确保所有的文件系统(/etc/fstab中指定的)都已经正确挂在,接着就执行/etc/init.d下的一系列脚本来启动服务。接着init就会激活终端,并将进程agetty和他绑定。agetty确保用户能在终端登录。

实际上init会根据不同的运行级别来启动不同的进程。这个运行级别的控制在/etc/inittab中。 Continue reading »

 

引言部分:

多媒体处理算法应用在很多媒体处理环境中,如对文本,手写数据,2D/3D图形和音频对象的捕捉、制造、存储和传输等。过去 都是使用昂贵的多媒体处理硬件协同工作来加速。现在,通用处理器通过在体系结构上增加媒体处理支持来减少使用协同处理器分配和返回带来的开销。在通用处理 器上一个基本的操作能同时作用多个元素的支持成为SIMD并行处理。通过SIMD扩展,通用护理器通过捕捉多媒体算法中潜在的并行特性来加速应用。

自 Intel在Pentium II和Pentium 处理器引入了MMX技术以来,IA-32架构已经引入了许多SIMD扩展,分别是:MMX,流SIMD扩展(SSE), 流SIMD扩展(SSE2)和流SIMD扩展(SSE3),SSSE3,SSE4和高级向量扩展(AVX).这些扩展都提供了一组指令,能够为封装好的整点或浮点数据提供SIMD类型的操作。其他结构也 有自己的SIMD扩展。如AMD的3DNow!,Cell和PowerPC的AltiVec等等。 Continue reading »
 

texlive毕竟是老外写的,不过很幸运我们有ctex.org社区。Windows下的支持,在他们的努力下,非常方便。两年前用的时候,直接下载安装包。编译tex文件时,自动下载缺的宏包。

但可惜linux下就不容易了。再加上字体的版权问题,实在头疼!不过幸好texlive2009增强了对字体的支持,所以简单了很多:)下面介绍本博在折腾中易字体时的经验,包括youyuan,simfang,simsun,lishu,simhei,simkai六种字体。

首先,到windows/fonts/目录下找,看是否可以直接拷贝这几款字体,如果没有,可以从这里下载。拷贝到目录~/texmf/fonts/truetype/sim下。

拷贝字体之后,还需要做个格式转换,把windows字体转换为texlive可用的字体,请参考Linuxsir.org的帖子

然后,下载ctex-kit.

cd ~/texmf/tex/latex
svn checkout http://ctex-kit.googlecode.com/svn/trunk/ctex

Continue reading »

 

距离GCC 4.4的发布一年之久,GNU终于发布GCC 4.5了。新版本带来了很多新特性,包括使用MPC库在编译时完成复杂的算术计算,C++0x支持增强,使用部分Graphite完成自动并行化,支持新的ARM处理器,Intel Atom优化和调优支持,以及AMD Orochi优化支持等。今年稍晚发布的Fedora 14,Ubuntu 10.10,OpenSUSE 11.3,都将有GCC4.5,估计Gentoo马上就会有支持了,磨拳擦掌准备试用喽:)详细支持如下:

总体说明:

  • 编译GCC需要MPC库
  • 故纸堆里的旧系统和很久没有更新和测试的系统在GCC4.5中被标记为待放弃,包括IRIX, Solaris 7, Tru64 UNIX V5.1.
  • GCC4.4中标记为待放弃的支持被放弃
  • 移除Itanium 1变种支持,但Itanium2编译的程序能在Itanium1上正确执行
  • GCC生成的调试信息包括了更多DWARF 3的特性,甚至包含了DWARF4的一些特性.GDB7.0之前的版本将无法使用这些特性.所以调试GCC4.5编译的程序需要使用GDB7.0及以上版本.也可以使用选项 -gdwarf-s  -gstrict-dwarf来禁止生成DWARF4信息,或者-gdwarf-2 -gstrict-dwarf让GCC严格执行DWARF2标准.
  • X86上,浮点运算在GCC4.5上使用严格C99语法编译时,可能会运行变慢。这是为了和标准一致,可以通过选项-fexcess-precision=fast来避免严格的标准限制。
  • noinline属性不再能阻止整个函数拷贝。但可以通过新的属性noclone做到。

Continue reading »

 

最近想折腾用texlive写点东西,而且要支持中文。就冲着texlive-2009了。大学毕业论文就是用latex写的,不过那是在Windoews下,用CTEX包,很是方便,Gentoo就有点不一样了。虽然texlive有自己的iso镜像,有自己的安装工具和包管理工具,但Gentoo还是将它拆分成了很多的packge来装。这样也好,比较灵活。

下面就开始吧。

首先是keywords和use,因为现在2009还不稳定,而我用的是x86就要增加一堆的keyword,如下:

app-text/texlive ~x86
app-text/texlive-core ~x86
dev-texlive/texlive-documentation-english ~x86
dev-texlive/texlive-documentation-base ~x86
dev-texlive/texlive-basic ~x86
dev-texlive/texlive-bibtexextra ~x86
dev-texlive/texlive-context ~x86 Continue reading »
 

本博在实际工作中,曾经安装过不少龙芯电脑的系统,可谓稍有经验,这里略微介绍一些常见问题。

  1. 内核通用吗?一般龙芯2F使用MIPSIII的指令级,内核格式都为64位的文件。所以不管时O32系统还是N32系统,只要硬件相同都是通用的,不过别忘了连同/lib/modules 和/lib/firmware一起使用:)
  2. 龙芯到底有多少种系统?很多,按照ABI分为3类:O32,N32,N64.O32是出厂时自带的系统,一般龙芯盒子中的华镭,龙芯本中的loonux、红旗和龙芯一体机中的共创都是O32系统。这类系统基本都是在debian的基础上做做山寨化。当然也有英文版的debian系统,这个比较干净一些。对于O32的系统,源的问题最头疼,因为各个公司画地为牢,大家都努力维护自己的源,又都缺人手,所以都不完美,试了几个都不太好,装着装着就会出依赖问题,除非一直跟着升级,不然一次apt-get dist-upgrade,那简直是噩梦。N32的系统,zhllg基于Gentoo的已经有了,龙芯论坛里就能找到下载链接。因为Gentoo是自己直接编译,问题相对少些。debian的还没有。N64的系统,有憨牛LFS的,没有试过。至于为啥会有这么多系统,得问问MIPS,因为有不少改进,就产生了不少问题。请参考本博<好大一筐梅普斯>.N32系统据说比O32快20%-30%。因为龙芯本身是64位处理器,所以64位系统也没问题.
  3. Continue reading »

 

1..so为动态链接库,.a为静态连接库。他们在Linux下按照ELF格式存储。ELF有四种文件类型。可重定位文件(Relocatable file,*.o,*.a),包含代码和数据,可用来连接成可执行文件或共享目标文件;可执行文件(Executable File),ELF可执行文件;共享目标文件(Shared Object File,*.so),包含代码和数据;核心转储文件(Core Dump File),进程意外终止时,系统将该进程的地址空间内容和其他信息保存到该文件中。
file命令可以查看。
2,Objdump程序,来自binutils,可以查看Object file内的结构。-h:打印各个段基本信息;-s所有段内容以16进制打印;-d:将所有包含指令的段反汇编。
3, ar -t libc.a;查看libc.a压缩了那些.o文件。
4, collect2 是ld连接器的包装,它调用ld链接目标文件,并对结果做处理,包括收集所有与程序初始化相关的信息并构造初始化结构。
5,readelf:查看ELF文件。 -s:打印符号信息;
Continue reading »

 

emerge一个软件包时Portage的工作方式:
1,Portage下载源码tar包和补丁(如果需要的话)
2,Portage解压缩tar包到指定位置,所有的编译将在该目录展开,Portage默认使用/var/tmp/portage/packagename/work
3,解压和打补丁(如果需要的话)后(ebuild中的src_unpack()函数),Portage开始编译,一般情况下在特定目录(ebuild使用${WORKDIR}变量指定目录)下执行configure和make命令.
4,编译完成后,portage将所有指定目录下的文件合并到正在运行的系统中.(通常为/,但通过合并时设置ROOT=”/路径”可以修改),为了避免非法或不正确的ebuild对整个文件系统造成不可逆的破坏,我们需要严格限制文件系统的哪个区域允许portage在解压和编译时修改,这就是沙盘工作的路径,默认时,沙盘启动,并限定ebuild(和它执行过程中的明林)都在指定的区域内写磁盘.若ebuild越过沙盘保护的环境,试图在外部区域写磁盘,就构成了沙盘越界.
Continue reading »

 

严格的说WebKit仅仅是个浏览器核心,采用该核心的浏览器很多,如国内的搜狗浏览器,遨游浏览器。其他的如google的chrome(Windows平台,linux平台下为chromium),epiphany(linux平台下,gnome2.28版本之后),苹果的Safari 都采用了webkit的内核。Firefox则是采用Gecko的内核,这是NetScape公司开发的内核,后来开源,mozilla继续开发。另外,现在还有另外两种常见的浏览器内核,Trident主要用在IE系列上,Presto主要用在Opera上。

这篇文章仅仅针对浏览器处理JavaScript的性能作比较,主要在X86平台和龙芯平台。先来解释一下JavaScript,JavaScript是互联网内较为常用的脚本语言,面向对象,主要在浏览器内解释执行,用于生成动态网页,因为很多语言特性受Java影响,所以叫JavaScript。通过JavaScript,浏览器可以运行服务器想要在访问者终端上运行的一些计算程序,以达到更好的浏览体验。 Continue reading »

2009-2011© 编译点滴 Suffusion theme by Sayontan Sinha

无觅相关文章插件,快速提升流量