servicemain的编译折腾了很久,写个日志记一下,以后好学习。
要编译servicemain要先编译ace,然后编译servernet
1、目录结构
bin
linux
bin.debug.Linux.i686 存放编译后的so和bin结果,编译ace后,要将libACE.so复制到这个目录,否则编译servernet时链接找不到函数
build
linux 有Makefile.XXX
obj
obj.debug.Linux.i686
libservernet
series 保存各个工程的obj文件,由于权限的问题,不能创建这个目录,会出错,可以手动创建
servermain.bin
common //这是公共的头文件
sdk
ACE-5.6.1
ACE_wrappers //这就是ace工程
openssl-1.0.0c //编译ace时需要这个
server
common
ServerNet 这就是servernet工程
include
recordersvr
servicemain //这就是要最终编译的工程
inc //.h文件
2、编译
到ace工程目录,运行./build_ace.sh PC,然后将build_pc下的lib目录下的libACE.so复制到bin***i686下
到servernet工程目录,运行make
到servicemain工程目录,运行make
3、问题
链接文件从svn传到windows再到linux,会破坏链接文件,要删除文件,再重新建立链接
发生的情况主要是inc目录下的share_men.h和share.memn.h,可以删除这两个文件运行
ln -s ../../../common/include/comminlib/share_men.h share_men.h
ln -s ../../../common/include/comminlib/share_men.h share_memn.h
总体命令是:ln -s 源文件名 符号文件名
4、编译环境的更新
8001/8002使用的gcc和g++是4.7.2版本,由于apt-get install安装的版本不统一,程序编译或者运行时可能会出问题。
可以统一使用该版本编译器。
1.tar zxvf GccG++4.7-20141104.tgz -C / (可以将tgz包传到任意目录,运行这个命令就可以)
2.切换编译器步骤,例如:
查看g++ 版本
#g++ -v
如果当前版本是4.6,则修改compile.sh, 设置OVER=4.6,并设置VER=4.7(如果原来是4.7要设置OVER=4.7)
#compile.sh readd
#g++ -v
发现g++版本已经修改为4.7