工作日志--servicemain编译

来源:互联网 发布:知乎Nba力量 编辑:程序博客网 时间:2024/05/16 06:21

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


0 0