zoukankan      html  css  js  c++  java
  • AIX6.1用g++安装Poco-1.6.1-all

    项目终于到了把程序往小型机上部署的阶段了。不得不说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周!)

     1 #
     2 # $Id: //poco/1.6/build/config/AIX_GCC#2 $
     3 #
     4 # AIX
     5 #
     6 # Make settings for Linux 2.6/gcc 4.2
     7 #
     8 #
     9 
    10 #
    11 # General Settings
    12 #
    13 LINKMODE ?= SHARED
    14 
    15 #
    16 # Define Tools
    17 #
    18 CC      = ${CROSS_COMPILE}gcc
    19 CXX     = ${CROSS_COMPILE}g++
    20 LINK    = $(CXX)
    21 LIB     = ${CROSS_COMPILE}ar -cr
    22 RANLIB  = ${CROSS_COMPILE}ranlib
    23 #SHLIB   = $(CXX) -shared -Wl,-soname,$(notdir $@) -o $@
    24 SHLIB   = $(CXX) -shared -Wl,-brtl -maix64 -fconserve-space -o $@
    25 SHLIBLN = $(POCO_BASE)/build/script/shlibln
    26 STRIP   = ${CROSS_COMPILE}strip
    27 DEP     = $(POCO_BASE)/build/script/makedepend.gcc
    28 SHELL   = sh
    29 RM      = rm -rf
    30 CP      = cp
    31 MKDIR   = mkdir -p
    32 
    33 #
    34 # Extension for Shared Libraries
    35 #
    36 SHAREDLIBEXT     = .so.$(target_version)
    37 SHAREDLIBLINKEXT = .so
    38 
    39 #
    40 # Compiler and Linker Flags
    41 #
    42 CFLAGS          = -maix64 -fconserve-space
    43 CFLAGS32        =
    44 CFLAGS64        =
    45 #CXXFLAGS        = -Wall -Wno-sign-compare
    46 CXXFLAGS        = -maix64 -fconserve-space -Wno-sign-compare
    47 CXXFLAGS32      =
    48 CXXFLAGS64      =
    49 LINKFLAGS       =
    50 LINKFLAGS32     =
    51 LINKFLAGS64     =
    52 STATICOPT_CC    =
    53 STATICOPT_CXX   =
    54 STATICOPT_LINK  = -static
    55 SHAREDOPT_CC    = -fPIC
    56 SHAREDOPT_CXX   = -fPIC
    57 #SHAREDOPT_LINK  = -Wl,-rpath,$(LIBPATH)
    58 SHAREDOPT_LINK  = -Wl,-brtl -maix64 -fconserve-space
    59 DEBUGOPT_CC     = -g -D_DEBUG
    60 DEBUGOPT_CXX    = -g -D_DEBUG
    61 DEBUGOPT_LINK   = -g
    62 RELEASEOPT_CC   = -O2 -DNDEBUG
    63 RELEASEOPT_CXX  = -O2 -DNDEBUG
    64 RELEASEOPT_LINK = -O2
    65 
    66 #
    67 # System Specific Flags
    68 #
    69 #SYSFLAGS = -D_XOPEN_SOURCE=500 -D_REENTRANT -D_THREAD_SAFE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DPOCO_HAVE_FD_EPOLL
    70 SYSFLAGS = -D_REENTRANT -D_THREAD_SAFE -D__powerpc__
    71 
    72 #
    73 # System Specific Libraries
    74 #
    75 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!

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

  • 相关阅读:
    前端之CSS盒模型介绍
    前端之CSS列表及背景类属性
    前端之CSS字体和文本类属性
    流程控制语句
    前端之CSS语法及选择器
    前端之CSS创建的样式
    前端之HTML语法及常用标签
    前端之HTML样式
    网页制作之前端简介
    jQuery(一)、核心
  • 原文地址:https://www.cnblogs.com/xi52qian/p/4902400.html
Copyright © 2011-2022 走看看