archlinux下使用MinGW交叉编译testdisk

前面已经配置好了MinGW的交叉编译环境,现在就可以在archlinux下编译testdisk了。由于testdisk需要curses的支持,可以使用PDcureses。

安装PDCurses

1
yaourt -S mingw32-pdcurses

编译testdisk

1
./configure --host=i486-mingw32 --disable-missing-uuid-ok && make

这样就编译好了。在windows下运行发现没有问题。:) (终于可以不用忍受windows下mingw的蜗牛速度了)

archlinux搭建MinGW跨平台编译环境

由于MinGW在Windows上的速度实在不敢恭维,所以决定在archlinux下搭建MinGW的跨平台编译环境。方法有两种。

  1. 通过安装community中的mingw32-gcc实现
1
2
# 安装mingw32-gcc就行,其他的如mingw32-base, mingw32-runtime...等会作为依赖安装
sudo pacman -S mingw32-gcc

这种方法安装了最基本的编译环境,如果需要其他的库,则需要自行编译或者通过aur安装。

  1. 通过MinGW cross compiling environment来实现。http://mingw-cross-env.nongnu.org
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#1. 下载
wget https://bitbucket.org/vog/mingw-cross-env/downloads/mingw-cross-env-2.20.tar.gz

#2. 解压
tar -xzvf mingw-cross-env-2.20.tar.gz

#3. 移动到/opt目录(可选)
mv mingw-cross-env-2.20 /opt/mingw

#4. 安装
su -
cd /opt/mingw
make

#5. 其他的包可以参见mingw-cross-env的文档

gdb保存和加载断点等信息

刚开始使用gdb,在重启gdb的时候断点、环境变量等信息都必须重新设置,感觉很不方便。不过gdb提供了.gdbinit,可以方便的在启动的时候对gdb进行设置。比如下面用于保存和加载breakpoints

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
define bsave
  shell rm -f brestore.txt
  set logging file brestore.txt
  set logging on
  info break
  set logging off
  # reformat on-the-fly to a valid gdb command file
  shell perl -n -e 'print "break $1n" if /^d+.+?(S+)$/g' brestore.txt > brestore.gdb
end 
document bsave
store actual breakpoints
end

define brestore
  source brestore.gdb
end
document brestore
restore breakpoints saved by bsave
end

调用bsave保存breakpoints,调用bresotre加载breakpoints。 再如对于调试ncurses的设置:

1
2
3
4
5
6
7
8
9
define settty
  tty /dev/pts/$arg0
end

define setterminfo
  set env TERM=xterm
  set env COLUMNS=144
  set env LINES=29
end

archlinux下安装oracle 10g enterprise

按照arch wiki做就可以了。参考链接https://wiki.archlinux.org/index.php/Oracle

这里,安装ksh的步骤可以跳过,直接安装pdksh

1
sudo pacman -S pdksh

安装过程中可能在62%左右提示一个错误,点continue不影响使用。

默认安装完成之后,重新启动archlinux之后,oracle是不会启动的。手动启动的方法:

  1. su - oracle # 这里得以oracle启动
  2. sqlplus /nologo
  3. sql> conn / as sysdba
  4. sql> startup
  5. sql> exit
  6. lsnrctl start