AIX6.1用g++安装Poco-1.6.1-all
2015-10-22 18:43
531 查看
项目终于到了把程序往小型机上部署的阶段了。不得不说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周!)
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!
转载请注明出处。。。。。。。。。。。。。。。
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=500 -D_REENTRANT -D_THREAD_SAFE -D_FILE_OFFSET_BITS=64 -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!
转载请注明出处。。。。。。。。。。。。。。。
相关文章推荐
- jedis高版本的JedisPoolConfig没有maxActive和maxWait
- Flume之Failover和Load balancing原理及实例
- error: RPC failed; result=18, HTTP code = 200 gitlab 百兆以上库下载报错
- 【PAT】1090. Highest Price in Supply Chain (25)
- ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
- HDU2473 Junk-Mail Filter【并查集删点】
- IO流中available 的理解和使用
- 请使用/main进行编译,以指定包含入口点类型
- XCode ERROR ITMS-90049 This bundle is invalid The bundle identifier contains disallowed characters
- 在非Main Activity中完全退出应用
- error: RPC failed; result=22, HTTP code = 413 git push时
- IPC机制之四:IPC方式(AIDL)
- Dell PowerEdge服务器RAID卡驱动下载
- Run-Time check failure #3 : 报未初始化警告的解决办法。
- opencv主函数main中的参数说明
- 分类算法之朴素贝叶斯分类(Naive Bayesian classification)
- 线程中的wait和notify方法
- 五子棋小游戏和简单AI思路
- NSString,NSMutableString使用retain, copy理解
- Installation error: INSTALL_FAILED_MEDIA_UNAVAILABLE