Windows 的Souce Insight 是非常经典的C编译器,无论是应用程序开发和编译都是相当不错,Linux 有Kcodes,但功能不如Source Insight.有一种解决方案的是在LINUX安装Wine, 然后安装Source Insight.
Wine编译安装
Wine 下载路径:
http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.0.1.tar.bz2
wine的安装是简单的configure & make & make install
编译时提示
gcc -c -I. -I. -I../../include -I../../include -I/usr/local/include/freetype2 -I/usr/local/include -D__WINESRC__ -D_GDI32_ -D_REENTRANT -fPIC -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -Wpointer-arith -g -O2 -o freetype.o freetype.c freetype.c:166: error: 'FT_MulFix' undeclared here (not in a function) freetype.c:166: warning: type defaults to 'int' in declaration of 'pFT_MulFix' freetype.c: In function 'WineEngGetOutlineTextMetrics': freetype.c:5009: error: called object 'pFT_MulFix' is not a function freetype.c:5010: error: called object 'pFT_MulFix' is not a function freetype.c:5012: error: called object 'pFT_MulFix' is not a function |
按照网络的提示解决办法。去掉对pFT_MulFix的处理。
http://lists.nongnu.org/archive/html/freetype-cvs/2008-09/msg00003.html
和
http://forum.ubuntu.com.cn/viewtopic.php?f=121&t=244486&view=next
提示,对其代码打补丁。
修改freetype.c
这里的问题出现在 dlls/gdi32/freetype.c下
这里FT_MulFix在 FT_MULFIX_INLINED模式下是 指FT_MULFIX_INLINED本身
原来的2441行
LOAD_FUNCPTR(FT_MulFix)
扩充成
#ifndef FT_MULFIX_INLINED
LOAD_FUNCPTR(FT_MulFix)
#endif
原来166行
MAKE_FUNCPTR(FT_MulFix)
扩充成
#ifdef FT_MULFIX_INLINED
#define pFT_MulFix FT_MULFIX_INLINED
#else
MAKE_FUNCPTR(FT_MulFix);
#endif
修改后然后编译,安装(make & make install)
成功后,运行winecfg 会弹出一个对话框进行设置.
其中wine把 ~/.wine/driver_c 当做C盘来使用.
安装Source Insight
1.首先用Wine执行Source Insight 的安装程序.进行安装
先将Si的安装程序拷入LINUX下.然后执行安装.
wine Si35Setup.exe
这里桌面显示Source Insight安装界面
2.用Winecfg把常用的工作目录都虚拟成WINDOWS的盘符,如我把/home/hxy,/home/workspace 虚拟成d:,e:
3.为了方便调用,在RHEL桌面建一个快捷方式.
建快捷方式的调用命令是.
wine "C:/Program Files/Source Insight 3/Insight3.exe"
4.按Source Insight 的正常方式使用即可.
另外一种快速执行方法:
Wine已经在系统中关联了所有的.exe文件,因此在系统中的.exe程序可以直接双击或右键菜单选Wine loader执行.
Wine中文支持的调整
中文系统下.WinCfg的按钮的提示是方块,无法正常提示.Source Insight 也无法显示中文和输入中文,都是乱码.也无法用拷贝的方式加入到当中.而同样的环境下.WINDOWS的写字板程序能正常的显示和用SCIM输入中文.
根源在WINE使用Tahoma字体显示对话框,这个字体无法正常显示中文,补救的方法有两种,
方法1:
一种是修改注册表,用regedit编辑Wine 注册表.执行如下命令:
wine regedit
将下列项注册表目录设为空.(我是逐一删除)
/HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/FontSubstitutes
重新运行winecfg 后,对话框下面的”确定“,”取消“和”应用“正常显示.但是有一些对话框程序仍然显示乱码。
全英文环境需要用如下命令来执行
env LANG=zh_CN.UTF-8 wine XXX
方法2
2.1 从Windows拷贝Windows 默认字体,宋体字体,并将MS Shell Dlg的值设为 simsun(宋体)
首先 windows xp 的 Fonts 目录下,把 simsun.ttc (即宋体)复制到 ~/.wine/drive_c/windows/fonts
2.2 将下列已经修改好的reg注册表文件导入系统,主要是把对话框字体换成宋体。执行
wine regedit zh.reg
2.3 source insight 此时仍无法显示中文,使用网上提供的gdi32.dll.so 补丁后,source Insight 能部分显示GBK的中文文件内容,
方法
mv /usr/local/lib/wine/gdi32.dll.so /usr/local/lib/wine/gdi32.dll.so.backup
cp gdi32.dll.so /usr/local/lib/wine/
2.4 设置riched20.dll
打开winecfg,在libraries选项页下,添加riched20.dll和riched32.dll (别忘复制这两个文件到你wine的system32目录下) ~/.wine/drive_c/windows/system32
然后选edit,都设为native
这样source Insight 的编辑区仍然无法输入汉字(可能采用非标准控件)但是标准的文件对话框输入框都能输入中文,并且能拷贝到编辑区中。也可以用WINDOWS的记事本程序书写汉字。大段拷贝过来。(但仍然有部分乱码)但好象也只能做到这一步了,本身SI对汉字的支持就不好。
|
文件: |
wine-patch.zip |
大小: |
212KB |
下载: |
下载 |
|