作业要求
下载RCF库并编译成静态库/动态库
宿主机操作系统:ubuntu
wget https://www.deltavsoft.com/downloads/RCF-3.2.413.tar.gz # 下载RCF压缩包
tar xvf RCF-3.2.413.tar.gz # 解压到本地文件夹
在/root/code/rcf/RCF-3.2.413文件夹下
g++ -I include/ src/RCF/RCF.cpp -lpthread -ldl -luuid -c # 生成obj文件
# -l:链接第三方库 -I:头文件目录 -c只进行 预处理, 编译,汇编操作,生成.o (.obj)文件,不进行链接。
报错fatal error: uuid/uuid.h: No such file or directory
sudo apt-get install uuid-dev # 安装uuid-devuuid-dev
# 重新运行g++命令成功
mkdir lib # 创建lib文件夹,存放静态库与动态库文件
# 生成静态库
# 将所有.o文件打包为静态库,r将文件插入静态库中,c创建静态库,不管库是否存在,s写入一个目标文件索引到库中
ar rcs librcf.a RCF.o
mv librcf.a lib/
mv RCF.o lib/RCF_static.o
# 生成动态库
g++ -I include/ src/RCF/RCF.cpp -lpthread -ldl -luuid -c -fPIC # 参数-fPIC表示生成与位置无关代码
g++ -shared -o librcf.so RCF.o
mv librcf.so lib/
mv RCF.o lib/RCF_share.o
仿照/root/code/rcf/RCF-3.2.413/demo文件夹下的demo编写RMI程序
// interface.h
#pragma once
#include
#include
RCF_BEGIN(I_Translate, "I_Translate")
RCF_METHOD_R1(std::string, Translate, const std::string &);
RCF_END(I_Translate);
// server.cpp
#include
#include
#include
编译运行
# 使用静态库
g++ client.cpp /root/code/rcf/RCF-3.2.413/lib/librcf.a -I /root/code/rcf/RCF-3.2.413/include/ -o client_static -lpthread -ldl -luuid
g++ server.cpp /root/code/rcf/RCF-3.2.413/lib/librcf.a -I /root/code/rcf/RCF-3.2.413/include/ -o server_static -lpthread -ldl -luuid
# 使用动态库
g++ client.cpp /root/code/rcf/RCF-3.2.413/lib/librcf.so -I /root/code/rcf/RCF-3.2.413/include/ -o client_share -lpthread -ldl -luuid
g++ server.cpp /root/code/rcf/RCF-3.2.413/lib/librcf.so -I /root/code/rcf/RCF-3.2.413/include/ -o server_share -lpthread -ldl -luuid
参考博客
RCF的使用
Linux基础——gcc编译、静态库与动态库(共享库)