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周!)
#
# $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的更多相关文章
- ubuntu16.04下g++安装及使用
1)首先在虚拟机中安装Ubuntu16.04,网络模式设置为NAT模式,安装完成后在虚拟机中测试是否能够上网. 2)进入Ubuntu,按Ctrl+alt+T,调出终端,输入sudo su,输入密码切换 ...
- ubuntu下编译安装poco
系统环境: ubuntu版本:Linux jfcai-VirtualBox 4.15.0-29-generic #31-Ubuntu SMP Tue Jul 17 15:39:52 UTC 2018 ...
- gcc g++ 安装与配置 入门详解 - 精简归纳
gcc g++ 安装与配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 24 转载请注明出处!️ 目录 gcc g++ 安装与配置 入门详解 - 精简归纳 一.下载MinGW ...
- debian下编译安装poco
系统环境: debian版本:Linux localhost.localdomain 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC ...
- linux平台编译安装Poco C++
1.到官网下载poco-1.4.6p4-all.tar.gz,地址为http://pocoproject.org/download/index.html 2.同时下载说明文档 3.根据说明文档执行安装 ...
- win 下g++ 安装、环境配置等
工具:eclipse for c++: 由于eclipse没有集成c++的编译器及执行环境,所以须要自己额外安装g++等. 方法: 使用MinGW来下载和安装须要的工具: 下载地址:http://ww ...
- linux centos 装g++安装不了
今天需要编译一个项目的时候在装g++都装不上, [root@master hadoop]# yum install g++ Loaded plugins: fastestmirror, refresh ...
- g++安装 Gnome/Gtk+开发库 的 环境安装(安装widgets的必要条件)
sudo yum install gcc-c++ 我在更新软件源后,看了看最新版的GTK开发版是3.0的. 所以,基本可以照搬. sudo yum -t install gtk3 sudo yum - ...
- WINDOWS 10下64位本地 ORACLE 11 G安装完整教程
URL:https://www.cnblogs.com/count-mjb/p/7655592.html wssbht = (DESCRIPTION = (ADDRESS_LIST = (ADDRES ...
随机推荐
- 怎样设置IIS6.0的闲置超时时间
打开IIS 信息服务管理器 1)打开IIS,点击应用程序池 2)找到Bs项目使用具体程序池(DspTest) 3)右键属性找到高级设置-- 进程模型 -- 闲置超时 4)设置闲置超时时间(默认为20分 ...
- custom usb-seriel udev relus for compatible usb-seriel devices using kermit
custom usb-seriel udev relus for compatible usb-seriel devices add-pl2303.rules: ACTION== "add& ...
- POJ 2566 Bound Found 尺取 难度:1
Bound Found Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 1651 Accepted: 544 Spec ...
- Java多线程安全问题
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- python 爬虫系列教程方法总结及推荐
爬虫,是我学习的比较多的,也是比较了解的.打算写一个系列教程,网上搜罗一下,感觉别人写的已经很好了,我没必要重复造轮子了. 爬虫不过就是访问一个页面然后用一些匹配方式把自己需要的东西摘出来. 而访问页 ...
- 使用Git进行本地提交后,未上传提交,却不小心删除了本地提交或提交所在分支,怎么办?????
使用Git进行本地提交后,未上传提交,却不小心删除了本地提交或提交所在分支,怎么办????? 不要紧!!!! 可以使用git reflog命令来帮助恢复删除的本地提交! 运行以下命令你就知道怎么用了! ...
- SWIFT Function
Swift中的函数跟JAVA语言的函数差不多,但也有差别,SWIFT中定义函数可以指定参数的名称这也是别的语言没有的,好处就是增加了可读性.其返回值是放在未尾的,如以下定义一个加法器: func ad ...
- Invalid /admin/*.jsp in filter mapping
完成错误信息 严重: A child container failed during start java.util.concurrent.ExecutionException: org.apache ...
- Spring JdbcTemplate中的回调
回调 JdbcTemplate类支持的回调类: 1.预编译语句及存储过程创建回调:用于根据JdbcTemplate提供的连接创建相应的语句: 1.1 PreparedStatementCreator ...
- Apache2.4配置总结(转)
文章内容转自- ->https://blog.csdn.net/u012291157/article/details/46492137 1.apache开机自启动 [root@csr ~]# c ...