项目终于到了把程序往小型机上部署的阶段了。不得不说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. JavaScript权威指南(第6版)(中文版)笔记

      JavaScript权威指南(第6版)(中文版)笔记      

  2. TClientDataSet 的Filename 和 open方法

    cdsAdd.Open 不能用open,因为这个是DataSet的通用方法,不会检测文件名的,文件名是CDS特有的

  3. 添加MyEclipse WebSphere Portal Server支持(一)

    [周年庆]MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] 一.支持WebSphere Portal Server 本文档介绍了如何支持和开发 We ...

  4. 【DevExpress v17.2新功能预告】DevExtreme TreeList

    在即将到来的v17.2中,您可以查看到DevExtremeHTML5 TreeList小部件的这些新功能. 1. 递归选择模式 TreeList将包括一个新的递归选择模式,您只需一次点击即可选择或取消 ...

  5. 和不安全的Android说再见,Google为它添加新铠甲

    伴随着最近被曝出的Heartbleed漏洞,安全问题再次成为网络上的热点话题.虽然Android的安全性并没有外界传言的那样脆弱,但Google还是在继续为其增加防护措施.根据Android官方博客的 ...

  6. iOS plist文件的读写

    原帖:http://blog.csdn.net/totogo2010/article/details/7634185 在做iOS开发时,经常用到到plist文件,  那plist文件是什么呢? 它全名 ...

  7. Foundation--NSString , array and Dictionary

    一,NSString的创建 NSString*str=@" a string ";//直接创建一个字符串常量,这样创建出来的字符串不需要释放内存 NSLog(@"%@&q ...

  8. 2.2 linux中的信号分析

    信号: 信号是UNIX系统响应某些状况而产生的事件,进程在接收到信号时会采取相应的行动. 信号是因为某些错误条件而产生的,比如内存段冲突.浮点处理器错误或者非法指令等. 信号是在软件层次上对中断的一种 ...

  9. magento首页点击任何产品都出现404错误的问题方法

    很简单,只要在其他项目上的根目录上复制一个.htaccess文件到项目跟目录下就可以 了,其实就是是设置伪静态:

  10. 配置阿里云ECS支持IPv6,解决苹果app审核失败问题

    前几天iOS的App提交给苹果审核没通过,给出的原因是:该应用在 IPv6 的环境下无法使用.检查发现:阿里云优化过的系统没有启用IPv6协议,需要配置启用一下,但是只单独启用IPv6也是无法直接提供 ...