Windows平台源码移植到Linux平台——采用dsapi开发domino登录认证Linux动态库

在文章 采用dsapi开发domino登录认证 中记录了windows平台如何开发domino登陆认证动态库,本篇将记录如何将该源码移植到Linux平台,编译出Linux平台支持的动态链接库so文件。

1、Linux平台编译环境配置

本人采用的Linux系统是centos7,版本号如下:
centos7
采用gcc进行程序的编译,gcc通过如下方式安装:

[zhl@localhost ~]#yum install gcc
[zhl@localhost ~]#yum install gcc-c++

新装的centosCentOS 默认已经安装了yum,使用yum工具安装软件时,需要事先配置yum源,配置方式如下:

[zhl@localhost ~]#cd /etc/yum.repos.d/

#安装repo源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo CentOS7-Base.repo
yum clean all
yum makecache

#安装epel源
[zhl@localhost ~]#yum install epel-release
[zhl@localhost ~]#yum makecache

#检测是否安装成功
[zhl@localhost ~]#yum repolist

yum源配置好后,如下图:
repo

2、Linux平台domino9.0安装环境配置

本人使用的是centos7的图形界面,所以安装较为简单,domino9.0安装的过程如下。

2.1domino9.0安装 操纵系统环境配置

1)关闭SELinux

#查看状态
[zhl@localhost ~]#getenforce
#关闭SELinux,修改SELINUX=disabled

[zhl@localhost ~]# vim /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

#使修改生效
[zhl@localhost ~]# setenforce 0

2)禁用不必要的服务

#检查已开启的服务
[zhl@localhost ~]#chkconfig -list|grep on
#禁用不必要的服务
[zhl@localhost ~]#chkconfig ip6tables off
[zhl@localhost ~]#chkconfig postfix off
[zhl@localhost ~]#chkconfig cups off

3)安装必备软件

#安装kernel-devel和kernel-headers,并且在更新时,禁止更新kernel
[zhl@localhost ~]#yum -y install kernel-devel kernel-headers&&echo exclude=kernel*>>/etc/yum.conf

#安装Domino及系统管理所需软件
[zhl@localhost ~]#yum -y install rsync wget ftp nmap yum-utils nfs-utils portmap zip unzip perl
#更新所有软件
[zhl@localhost ~]#yum -y update

2.2 domino软件安装

1)domino官网下载,网址如下:domino官网
2)上传到centos
本人是在windows环境下对domino进行的下载,所以需要将文件传送到centos中,采用ssh进行传输文件,windows采用PuTTY工具作为ssh的客户端,文件传输过程如下

c:\Program Files\PuTTY>psftp
psftp: no hostname specified; use "open host.name" to connect
psftp> open 192.168.5.130
login as: root
root@192.168.5.130`s password:
Remote working directory is /root
psftp> put  C:/users/zhl/Downloads/DOMI_SRV_901_LINUX32_EN_FULL_TRIAL.tar /home/zhl/Desktop

3)安装的domino环境设置

#创建notes账号
[zhl@localhost ~]#groupadd notes
[zhl@localhost ~]#useradd -g notes notes
[zhl@localhost ~]#passwd notes
[zhl@localhost ~]#su notes
#添加domino环境变量
[zhl@localhost ~]#vim /home/notes/.bash_profile
PATH=$PATH:$HOME/bin:/opt/ibm/domino/bin:/notesdata
echo "export DOMINO_LINUX_SET_PARAMS=1" >> /home/notes/.bashrc

#增加domino可用的文件句柄
[zhl@localhost ~]#ulimit -n 2000

#在/etc/security/limits.conf最后添加如下语句
[zhl@localhost ~]#vim /etc/security/limits.conf

notes soft nofile 65535
notes hard nofile 65535

4)安装domino

[zhl@localhost Desktop]tar xvf DOMI_SRV_901_LINUX32_EN_FULL_TRIAL.tar
[zhl@localhost Desktop]cd linux64/domino
[zhl@localhost Desktop]./install

会弹出安装界面,之后按默认,点击下一步直到完成即可。
安装界面

3、编译linux平台下的源码

由于本人基本对linux下的源码编译不是很熟悉,对gcc、makefile了解也一般,幸好visual studio提供Linux c++开发工具,因此本人采用windows下的visual studio2017作为开发平台,采用其LinuxC++工具远程连接到本人的centos系统进行编译,整个源码移植过程如下。

3.1、项目配置

1)新建项目选择 跨平台 》Linux 》 空项目(Linux)

项目
2)拷贝源码
拷贝源码后如下图:
源码
3)设置编译属性
选择配置类型为 动态库(so),目标文件拓展名修改为 .so
编译属性

设置C/C++》常规
常规

在C/C++》命令行 其他选项中 填入如下指令:

-c -I/usr/local/include/g++ -I/usr/include/g++ -O -w  -m64 -DGCC3 -DGCC4 -fno-strict-aliasing -DGCC_LBLB_NOT_SUPPORTED -Wformat -Wall -Wcast-align -Wconversion  -DUNIX -DLINUX -DLINUX86 -DND64 -DW32 -DLINUX64 -DW -DLINUX86_64 -DDTRACE -DPTHREAD_KERNEL -D_REENTRANT -DUSE_THREADSAFE_INTERFACES -D_POSIX_THREAD_SAFE_FUNCTIONS  -DHANDLE_IS_32BITS -DHAS_IOCP -DHAS_BOOL -DHAS_DLOPEN -DUSE_PTHREAD_INTERFACES -DLARGE64_FILES -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNDUNIX64 -DLONGIS64BIT   -DPRODUCTION_VERSION -DOVERRIDEDEBUG -fPIC  

如下图:
图

设置链接器》常规》附加库目录(该目录设置的是centos下的源码使用到的动态链接库的目录,因为vs2017 LinuxC++工具编译链接的时候都是远程登陆到centos系统中的,所以需要设置为centos的库所在的目录)
附加库
设置链接器》输入》库依赖项
库

注: linux下链接的时候 g++ 链接的库格式为 lib+库名+.so,所以配置的库依赖项log4cplus,实际去找的动态库名是 liglog4cplus.s

注:上述C/C++ 输入 设置的是window下的路径,为了保证程序阅读的时候没有错误,但是程序编译的时候,真实的是在CentOS中运行的,所以必须在CentOS中配置好头文件的引入路径才行。
CentOS中C/C++编译时默认头文件是在/usr/local/include中寻找的,所以我们需要将头文件放入该目录。

3.2、CentOS中程序使用到的库配置

本dsapi程序用到了log4cplus库和domino的notes库,现记录如下
1)log4cplus安装
http://sourceforge.net/projects/log4cplus/files/log4cplus-stable/ 下载最新版本的log4cplus,本人下载的是log4cplus-1.2.1.tar.bz2,下面记录log4cplus的安装

#用PuTTY中的psftp工具将log4cplus-1.2.1.tar.bz2上传到centos中
c:\Program Files\PuTTY>psftp
psftp: no hostname specified; use "open host.name" to connect
psftp> open 192.168.5.130
login as: root
root@192.168.5.130`s password:
Remote working directory is /root
psftp> put  C:/users/zhl/Downloads/Dlog4cplus-1.2.1.tar.bz2 /home/zhl/Desktop
/log4cplus-1.2.1.tar.bz2
#解压log4cplus-1.2.1.tar.bz2
[zhl@localhost Desktop]#tar -xjf log4cplus-1.2.1.tar.bz2
[zhl@localhost Desktop]#cd log4cplus-1.2.1/

#安装
[root@localhost log4cplus-1.2.1]# ./configure
[root@localhost log4cplus-1.2.1]# make
[root@localhost log4cplus-1.2.1]# make install

通过上述步骤,log4cplus的头文件自动放入到了/usr/local/include下,log4cplus动态连接库自动放在了/usr/lcoal/lib下。
2)domino c++ api库
domino C++ 开发包需要从官网https://www.ibm.com/developerworks/develop/collaboration/中下载 IBM C API Toolkit for Notes and Domino

下载好后解压缩,将其中的include文件夹通过psftp放入centos的/usr/local/include文件夹下

psftp> put -r  C:\Users\zhl\Documents\domino\C_API_TKT_NOTDOM_901AIXEN\notesapi901\include /usr/local/include/dsapi

虽然IBM C API Toolkit for Notes and Domino的工具包中有lib文件夹,并且里面有不同操作系统的lib文件,但是linux版本的文件夹里是notes0.o、notessai.o两个文件,本人是linux下编译程序的新手,尝试多次无法实现程序的链接,所以放弃使用C API Toolkit中的lib文件,而是在domino的安装目录下找到了libnotes.so的动态链接库并且链接成功,该libnotes.so文件的位置在/opt/ibm/domino/notes/90010/linux目录下面。

程序编译成功输出如下图
编译成功

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
DSAPI.DLL └─DSAPI ├─QQ用户相关 │ └─在线状态 │ ├─在线 │ ├─未知 │ └─离线 ├─内存资源 │ └─清理一下 ├─加载字体 │ └─加载指定字体文件 ├─图形图像 │ ├─从网址获取图片 │ ├─保护图像 │ │ ├─保护图像 │ │ └─解除保护 │ ├─图像特效 │ │ ├─变形 │ │ │ ├─从中心旋转 │ │ │ ├─从指定点旋转 │ │ │ └─调整大小 │ │ └─色彩 │ │ ├─亮度 │ │ ├─保留通道 │ │ ├─反色 │ │ ├─投影效果 │ │ ├─模糊 │ │ ├─灰度 │ │ ├─色彩通道 │ │ │ ├─粉 │ │ │ ├─红 │ │ │ ├─绿 │ │ │ ├─蓝 │ │ │ ├─青 │ │ │ └─黄 │ │ ├─透明度 │ │ └─黑与白 │ ├─彩色文字图像 │ │ ├─代码文本 │ │ ├─字体 │ │ ├─字符行距 │ │ ├─字符间距 │ │ ├─所有连接数量 │ │ ├─描边颜色 │ │ ├─文字清晰度 │ │ ├─文字颜色 │ │ ├─显示文本 │ │ ├─画布尺寸 │ │ ├─绘制描边 │ │ ├─绘制阴影 │ │ ├─获取指定坐标的链接 │ │ ├─输出图像 │ │ ├─链接 │ │ ├─链接下划线颜色 │ │ └─阴影颜色 │ └─透明窗体 │ ├─显示图像 │ ├─窗体支持鼠标拖动 │ ├─窗体支持鼠标调整尺寸 │ ├─绘制圆角矩形 │ └─绘制圆角矩形_带标题栏 ├─字串提取 │ ├─提取中间文本 │ └─提取所有中间文本 ├─序列化 │ ├─反序列化 │ ├─序列化 │ └─绑定 ├─文件类 │ ├─修改指定文件扩展名为指定打开方式 │ ├─压缩 │ ├─取消文件头 │ ├─添加文件头 │ ├─获取可读性强的字节大小信息 │ ├─解压缩 │ └─追加文件尾 ├─硬件信息 │ ├─硬件列表 │ ├─硬件选择 │ │ ├─主板 │ │ ├─光盘驱动器 │ │ ├─包括鼠标 │ │ ├─声卡 │ │ ├─打印机 │ │ ├─打印机任务 │ │ ├─指针设备 │ │ ├─显卡 │ │ ├─物理内存条 │ │ ├─硬盘序列号 │ │ ├─硬盘驱动器 │ │ ├─网络适配器 │ │ ├─软盘驱动器 │ │ └─键盘 │ └─获取硬件信息 ├─系统信息 │ ├─主显示器屏幕大小 │ ├─主显示器工作区大小 │ ├─使用交流电 │ │ ├─否 │ │ ├─是 │ │ └─未知 │ ├─启用列表框平滑滚动效果 │ ├─启用字体平滑效果 │ ├─启用平滑组合框打开效果 │ ├─启用按钮动画效果 │ ├─启用提示框淡入淡出效果 │ ├─启用标题栏渐变效果 │ ├─启用桌面主题 │ ├─启用窗口还原动画效果 │ ├─启用窗口阴影效果 │ ├─启用自动对齐默认按钮 │ ├─启用菜单淡入淡出效果 │ ├─图标排列单元格高度 │ ├─图标排列格子大小 │ ├─子菜单延迟显示时间 │ ├─屏幕旋转角度 │ ├─工作组 │ ├─已连接交

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风水月

从心底相信自己是成功的第一步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值