项目终于到了把程序往小型机上部署的阶段了。不得不说AIX真是让人恶心,一个Poco编译弄了我1周时间。网上根本没有相关的资料。

1. AIX下安装gcc/g++:
在ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gcc/下载:
gcc-4.2.0-3.aix6.1.ppc.rpm
libgcc-4.2.0-3.aix6.1.ppc.rpm
libstdcplusplus-4.2.0-3.aix6.1.ppc.rpm
libstdcplusplus-devel-4.2.0-3.aix6.1.ppc.rpm
gcc-cplusplus-4.2.0-3.aix6.1.ppc.rpm
并通过rpm –ivh 依次安装.

2. Poco进行configure时,会报错,提示在AIX下要安装补丁,补丁在Poco根目录下的patches/AIX/xlC8.diff。
> cp patches/AIX/xlC8.diff ./
> patch -p0 < xlC8.diff
运行失败,检查vi xlC8.diff发现这个补丁文件是Poco1.3版本时候的了,行号根本匹配不上,于是自己按照xlC8.diff
文件内容一个个文件修改了一下,还好升级的文件不是很多,之后用diff -ur自动生成了xlC8.diff文件,有些地方还需
要修改,项目工期紧张,没时间修改了,之后会把修改后的xlC8.diff文件传上来。
最后一步将patches/AIX目录删除。

3. 修改配置选项
> ./configure --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL --prefix=/opt/poco --no-tests --no-samples
> gmake -s
报错,找不到xlc_r,查看AIX上根本没有安装xlc IBM的编辑器。由于收费软件所以放弃,改用gcc/g++编译。
如果AIX安装了xlc的小伙伴们可以试试直接安装是否有什么问题。
由于用gcc/g++编译,第2步的diff升级可能不需要了,这里我没有测试。我依然用的修改后的文件编译。
因为Poco给出的AIX配置编译选项是放在根目录下的build/config/AIX文件,查看里面都是xlc的编译选项。于是自己参照Linux做了一个配
置文件AIX_GCC,放到build/config目录下,内容为:(失败过很多次修改的结果,花费时间1周!)

 #
# $Id: //poco/1.6/build/config/AIX_GCC#2 $
#
# AIX
#
# Make settings for Linux 2.6/gcc 4.2
#
# #
# General Settings
#
LINKMODE ?= SHARED #
# Define Tools
#
CC = ${CROSS_COMPILE}gcc
CXX = ${CROSS_COMPILE}g++
LINK = $(CXX)
LIB = ${CROSS_COMPILE}ar -cr
RANLIB = ${CROSS_COMPILE}ranlib
#SHLIB = $(CXX) -shared -Wl,-soname,$(notdir $@) -o $@
SHLIB = $(CXX) -shared -Wl,-brtl -maix64 -fconserve-space -o $@
SHLIBLN = $(POCO_BASE)/build/script/shlibln
STRIP = ${CROSS_COMPILE}strip
DEP = $(POCO_BASE)/build/script/makedepend.gcc
SHELL = sh
RM = rm -rf
CP = cp
MKDIR = mkdir -p #
# Extension for Shared Libraries
#
SHAREDLIBEXT = .so.$(target_version)
SHAREDLIBLINKEXT = .so #
# Compiler and Linker Flags
#
CFLAGS = -maix64 -fconserve-space
CFLAGS32 =
CFLAGS64 =
#CXXFLAGS = -Wall -Wno-sign-compare
CXXFLAGS = -maix64 -fconserve-space -Wno-sign-compare
CXXFLAGS32 =
CXXFLAGS64 =
LINKFLAGS =
LINKFLAGS32 =
LINKFLAGS64 =
STATICOPT_CC =
STATICOPT_CXX =
STATICOPT_LINK = -static
SHAREDOPT_CC = -fPIC
SHAREDOPT_CXX = -fPIC
#SHAREDOPT_LINK = -Wl,-rpath,$(LIBPATH)
SHAREDOPT_LINK = -Wl,-brtl -maix64 -fconserve-space
DEBUGOPT_CC = -g -D_DEBUG
DEBUGOPT_CXX = -g -D_DEBUG
DEBUGOPT_LINK = -g
RELEASEOPT_CC = -O2 -DNDEBUG
RELEASEOPT_CXX = -O2 -DNDEBUG
RELEASEOPT_LINK = -O2 #
# System Specific Flags
#
#SYSFLAGS = -D_XOPEN_SOURCE= -D_REENTRANT -D_THREAD_SAFE -D_FILE_OFFSET_BITS= -D_LARGEFILE64_SOURCE -DPOCO_HAVE_FD_EPOLL
SYSFLAGS = -D_REENTRANT -D_THREAD_SAFE -D__powerpc__ #
# System Specific Libraries
#
SYSLIBS = -lpthread -ldl -lrt

PS:于2015-11-09修改,之前的版本依然有BUG,编译后的POCO执行string赋值时会出现段错误。

4. 执行
> ./configure --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL --prefix=/opt/poco --no-tests --no-samples --config=AIX_GCC
成功后。
> gmake -s
编译到Data的时候,文件RecordSet.cpp的时候,382行结尾出问题,g++报错,段错误,然后崩了!这个问题没找到解决办法,因为我没有用到
这个文件,所以我将关联的三个文件从Poco中Makefile中删除,Data/Makefile修改后部分:

objects = AbstractBinder AbstractBinding AbstractExtraction AbstractExtractor \
    AbstractPreparation AbstractPreparator ArchiveStrategy Transaction \
    Bulk Connector DataException Date DynamicLOB Limit MetaColumn \
    PooledSessionHolder PooledSessionImpl Position \
    Range Row RowFormatter \
    SimpleRowFormatter Session SessionFactory SessionImpl \
    SessionPool SessionPoolContainer SQLChannel \
    Statement StatementCreator StatementImpl Time

> gmake -s
成功。
su - root
密码。
cd Poco目录
> gmake install
修改install目录的权限。OK!

转载请注明出处。。。。。。。。。。。。。。。

AIX6.1用g++安装Poco-1.6.1-all的更多相关文章

  1. ubuntu16.04下g++安装及使用

    1)首先在虚拟机中安装Ubuntu16.04,网络模式设置为NAT模式,安装完成后在虚拟机中测试是否能够上网. 2)进入Ubuntu,按Ctrl+alt+T,调出终端,输入sudo su,输入密码切换 ...

  2. ubuntu下编译安装poco

    系统环境: ubuntu版本:Linux jfcai-VirtualBox 4.15.0-29-generic #31-Ubuntu SMP Tue Jul 17 15:39:52 UTC 2018 ...

  3. gcc g++ 安装与配置 入门详解 - 精简归纳

    gcc g++ 安装与配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 24 转载请注明出处!️ 目录 gcc g++ 安装与配置 入门详解 - 精简归纳 一.下载MinGW ...

  4. debian下编译安装poco

    系统环境: debian版本:Linux localhost.localdomain 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC ...

  5. linux平台编译安装Poco C++

    1.到官网下载poco-1.4.6p4-all.tar.gz,地址为http://pocoproject.org/download/index.html 2.同时下载说明文档 3.根据说明文档执行安装 ...

  6. win 下g++ 安装、环境配置等

    工具:eclipse for c++: 由于eclipse没有集成c++的编译器及执行环境,所以须要自己额外安装g++等. 方法: 使用MinGW来下载和安装须要的工具: 下载地址:http://ww ...

  7. linux centos 装g++安装不了

    今天需要编译一个项目的时候在装g++都装不上, [root@master hadoop]# yum install g++ Loaded plugins: fastestmirror, refresh ...

  8. g++安装 Gnome/Gtk+开发库 的 环境安装(安装widgets的必要条件)

    sudo yum install gcc-c++ 我在更新软件源后,看了看最新版的GTK开发版是3.0的. 所以,基本可以照搬. sudo yum -t install gtk3 sudo yum - ...

  9. WINDOWS 10下64位本地 ORACLE 11 G安装完整教程

    URL:https://www.cnblogs.com/count-mjb/p/7655592.html wssbht = (DESCRIPTION = (ADDRESS_LIST = (ADDRES ...

随机推荐

  1. 蓝桥杯—ALGO-122 未名湖畔的烦恼(枚举)

    问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了, 每天下午收工后,常常一双冰鞋都不剩. 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个. ...

  2. linux make virtual memory more efficient three components

    Page Cache This is used to speed up access to images and data on disk. As pages are read into memory ...

  3. 关于Ubuntu 常用的简单指令

    这几天工作强度不算太高,就自己学了一下linux,我就把一些简单的指令整理了一下,希望以后有参考: 我是用的VMware 安装的Ubuntu 虚拟机: 下面直接贴出我整理的简单的日常使用的指令 创建文 ...

  4. DevExpress v17.2—WPF篇(一)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v17.2 新的Hamburger Menu.Sched ...

  5. 看黑客如何远程黑掉一辆汽车 - BlackHat 2015 黑帽大会总结 day 1

    0x00 序 今天是Black Hat 2015第一天,九点钟开场.开场介绍是由Black Hat创始人Jeff Moss讲的.随后又请来了Stanford law school的Jennifer G ...

  6. Python 字典的遍历

    dic = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟" ...

  7. HDU 3546

    http://acm.hdu.edu.cn/showproblem.php?pid=3546 题意:10个寄存器初值为1,有加乘赋值运算,最多30w次运算,大数最多5000位,问最后10个寄存器的结果 ...

  8. linux用户添加到多个组

    usermod -G groupname username (这种会把用户从其他组中去掉,只属于该组)如:usermod -G git git (git只属于git组) usermod -a -G g ...

  9. 【linux】使用swap文件恢复非正常关闭的文件

    前言 使用vim的时候,文件编辑过程中可能会出现bug,导致非正常关闭.为了保存刚刚修改的内容,需要对文件进行恢复. 操作过程 1.查看目录文件 zrj@zrj-ThinkPad-E470:~/wor ...

  10. caffe安装编译问题-ImportError: libopencv_core.so.3.4: cannot open shared object file: No such file or directory

    问题描述 >>> import caffe Traceback (most recent call last): File , in <module> File , in ...