在AIX上编译VIM的一个问题

有一个项目需要使用AIX的机器 自然要装一些常用的东西 在 AIX 6.1 上自己编译 VIM 7.4 时 报了这么个错 In file included from os_unix.h:56, from vim.h:265, from gui_motif.c:36: /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:178: error: conflicting types for `lseek64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:176: error: previous declaration of `lseek64' In file included from /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:739, from os_unix.h:56, from vim.h:265, from gui_motif.c:36: /usr/include/sys/lockf.h:64: error: conflicting types for `lockf64' /usr/include/sys/lockf.h:62: error: previous declaration of `lockf64' In file included from os_unix.h:56, from vim.h:265, from gui_motif.c:36: /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:802: error: conflicting types for `ftruncate64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:800: error: previous declaration of `ftruncate64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:838: error: conflicting types for `truncate64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:836: error: previous declaration of `truncate64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:855: error: conflicting types for `pread64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:852: error: previous declaration of `pread64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:856: error: conflicting types for `pwrite64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:853: error: previous declaration of `pwrite64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:923: error: conflicting types for `fclear64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:920: error: previous declaration of `fclear64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:924: error: conflicting types for `fsync_range64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:921: error: previous declaration of `fsync_range64' In file included from vim.h:302, from gui_motif.c:36: auto/osdef.h:120: error: conflicting types for `lseek64' /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.3.0.0/3.3.2/include/unistd.h:178: error: previous declaration of `lseek64' make: The error code from the last command is 1. Stop. make: The error code from the last command is 2. 查了半天 这是因为AIX6的一个变化引起的 ...

2014年10月11日 · 2 分钟 · Hyacinthus

在Linux/unix系统上安装最新的python

Unix系统是自带python的 不过就我用的AIX5.3和Redhat EL 5.3来说 都带的是2.4的 2.4最不方便的是exit还要带sys.exit() 还有一些其他不同 于是只好重新装个高版本的python 给Linux装python还是很简单的 和其他软件一样 首先在官方网站下载 比如选Python 2.7.1 compressed source tarball 将其传到服务器上解压 进入文件夹 ./configure make make install 这就应该自动安装完了 可以打python看看版本变了没 如果没有 whereis python看看链接在哪里 一般是/usr/bin/python 把这个链接删掉修改成最新的安装的那个 安装的路径注意下之前刷的日志应该能找到 嗯 为了访问Oracle 我还一起安装了cx_Oracle 这个安装稍微麻烦些 下次再说

2011年5月8日 · 1 分钟 · Hyacinthus

Oracle11g的lib32

Oracle 11g在各个平台64位操作系统上的安装 无论服务端还是客户端 都没有lib32包了 可是有的程序却必须要32位的库才能运行 我的解决办法是找一个相同平台上的32位的Oracle11g 将其中ORACLE_HOME的lib文件夹复制出来 改名为lib32放到64位的操作系统下 注意这没有结束 还有进到这lib32的目录里 执行ls -l 看看有两个链接的目标是不存在的 记住它们然后将它们删掉 用”ln -s 源文件 链接名”这个命令重新链接 然后就可用了 注意一定要是Oracle11g的 从Oracle10g复制过来lib32是无效的

2011年4月27日 · 1 分钟 · Hyacinthus

查看AIX是32位还是64位

其实小型机基本都是64位的吧 在安装软件前想安全的确认下 可以用如下命令 bootinfo -K 注意K是大写的 顺便说几个bootinfo其他的用途 bootinfo -y 返回机器硬件是32位还是64位 刚才是操作系统 这个是硬件 bootinfo -t 返回当前启动类型 1 Disk boot 3 CD-ROM boot 4 Tape boot 5 Network boot bootinfo -z 返回机器是否支持多处理器 0 不支持 1 支持 bootinfo -T 返回机器的硬件平台类型,比如rspc bootinfo -r 返回实际内存容量,单位为kbytes bootinfo -b 返回最后一次启动的设备

2011年3月17日 · 1 分钟 · Hyacinthus

Shell里的比较

经常看到有人迷惑于shell的比较 看到初学Linux的人写的简单shell一般都是if时出现各种错误 shell中的判断的确和一般的程序不太一样 如果你想仔细的研究这个问题 很简单 只需要在系统中man test 把test的帮助完全看懂就好了 这里我更简单的介绍下 给不想看英文帮助的人看 shell的比较是测试里的一类 测试还包括测试各种对象是否存在 他们全部返回一个bool值 大多在if的时候用 比较分为数值的比较和字符串的比较 数值的比较如下 -eq 等于 -ne 不等于 -gt 大于 -lt 小于 -le 小于等于 -ge 大于等于 比如要测试$1是否大于2就是 COUNT=3 if [ $COUNT –gt 2 ] then echo 'right' fi 注意方括号里边开始和结束各要空一个格 变量和比较命令之间也要空格 有时候错误就是空格引起的 至于有人会奇怪为什么这个比较这么奇怪 其实gt是greater than的缩写 其他以此类推 这下这命令好记了吧 ...

2010年12月30日 · 1 分钟 · Hyacinthus

usermod修改用户群组的问题

今天测试的程序 发现应用用户对oracle突然没权限了 去/etc/group看了一下 发现果然应用用户不在dba组了 这时才想起来之前自己用usermod -G给这个用户加过组 于是仔细查了查资料 才发现的确有问题 也许以前都是改/etc/group文件的 对usermod这个命令并不熟悉 usermod –G 并不是往从组里加一个group 而是会把用户以前的组全部抹掉 完全赋值成新的 所以用的时候已经记得把所有需要的组写一遍 其实如此说来改组还是直接去改/etc/group方便了 这个文件每行的格式为 组名:加密的口令:GID:用户1,用户2,…

2010年12月9日 · 1 分钟 · Hyacinthus

shell返回值长度

今天在AIX上写shell 将几个重复出现的段落提取出来做了个函数 让他们返回一个八位日期 function find_date { WORKDATE='20100101' return $WORKDATE } find_date echo $? 运行的时候 发现返回的值成了两位数… 于是查了查资料 原来返回值只有8位 于是最多到128 而shell的返回值一般只做出错标志来用 那我只能在函数里echo那个值了 然后用`函数`得到输出的值 function find_date { WORKDATE='20100101' echo $WORKDATE return 0 } DATE=`find_date` echo $DATE

2010年11月25日 · 1 分钟 · Hyacinthus

Shell中用SQLPLUS出错

前几天整理shell,将一个sqlplus语句移到了函数里,在AIX上,k-shell 如下: function a { sqlplus usr/pwd@sid <<! exit ! } 然后好好的语句就开始报错: test.sh: 0403-057 Syntax error at line 3 : `<‘ is not matched. 我开始以为是换行符的问题,或者是我手误在哪里输进去了个什么标点 结果查看了许久,都找不到什么错误的地方. 干脆写最基本的语句开始测试. 最终终于找到了让人哭笑不得的原因: 在shell里用«进入别的程序,结束标志不能缩进… 恍然大悟,我做的唯一改动就是把脚本整体右缩进了一个制表符呀. 以前还没留意过这个问题,我干脆写shell的函数不缩进了…

2010年11月23日 · 1 分钟 · Hyacinthus