当前位置: 首页 > news >正文

长沙住房和建设城乡委员会网站网络seo公司

长沙住房和建设城乡委员会网站,网络seo公司,吉林市建设官方网站,辽宁注册公司网站本文用的Linux系统为Ubuntu22.04,自带GCC11.3.0。 依赖 ①编译需要boost库,本文用的库版本为boost-1.82.0.beta1.tar.gz。 ②编译需要openssl库,这里使用的版本为openssl-1.1.1s.tar.gz。 ③编译需要cmake库,本文使用的是cmake-3…

本文用的Linux系统为Ubuntu22.04,自带GCC11.3.0。


依赖
①编译需要boost库,本文用的库版本为boost-1.82.0.beta1.tar.gz。
②编译需要openssl库,这里使用的版本为openssl-1.1.1s.tar.gz。
③编译需要cmake库,本文使用的是cmake-3.22.1。


编译依赖
①静态编译boost库到用户目录

./bootstrap.sh
./b2 -a  cxxflags='-fPIC -std=c++17' install --prefix=/home/code/cpprestsdk/boostlib link=static threading=multi boost.locale.icu=off

②静态编译openssl库到用户目录

./config --prefix=/home/code/cpprestsdk/openssllib -fPIC no-shared
make && make install

下载cpprtstsdk模块

git clone https://github.com/Microsoft/cpprestsdk
cd cpprestsdk
git submodule update --init

下载完成后需要修改一下CMakeLists.txt

cd Release
vi CMakeLists.txt

将以下三行

set(WERROR ON CACHE BOOL "Treat Warnings as Errors.")
set(CPPREST_EXCLUDE_WEBSOCKETS OFF CACHE BOOL "Exclude websockets functionality.")
set(CPPREST_EXCLUDE_COMPRESSION OFF CACHE BOOL "Exclude compression functionality.")

改成

set(WERROR OFF CACHE BOOL "Treat Warnings as Errors.")
set(CPPREST_EXCLUDE_WEBSOCKETS ON CACHE BOOL "Exclude websockets functionality.")
set(CPPREST_EXCLUDE_COMPRESSION ON CACHE BOOL "Exclude compression functionality.")

注意,这里第一行是将警告视为错误关闭,避免编译报错,后两行是去掉zlib依赖,如果系统上有zlib或者单独编译了zlib库,这两行可以不修改。

动态编译cpprestsdk模块

mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=/home/code/cpprestsdk/openssllib -DOPENSSL_INCLUDE_DIR=/home/code/cpprestsdk/openssllib/include -DBoost_LIBRARIES=/home/code/cpprestsdk/boostlib/lib -DBoost_INCLUDE_DIR=/home/code/cpprestsdk/boostlib/include -DCMAKE_INSTALL_PREFIX=/home/code/cpprestsdk/cpprestsdklib
make && make install

注意:如果上一步中没有去掉zlib库依赖,这里cmake命令中需要跟上zlib的信息(我就是因为zlib编译不过才去掉了zlib库依赖)

-DZLIB_INCLUDE_DIR=/home/code/cpprestsdk/zliblib/include -DZLIB_LIBRARY=/home/code/cpprestsdk/zliblib/lib

坐等编译完成(时间有点久,可能是因为是虚拟机的原因)。

测试程序
测试代码可以复制我另一篇博客:C++下最简单的Http服务器,注意把监听地址改成“127.0.0.1:9092”。
这里编译程序命令如下:

# 指定编译器
CC=g++
#指定编译选项
CFLAGS=-Wall -g
Target=res
Src:=$(wildcard ./*.cpp)
Objs:=$(patsubst %.cpp,%.o, $(Src))
#指定头文件位置
INCLUDES = -I/home/code/cpprestsdk/cpprestsdklib/include -I/home/code/cpprestsdk/boostlib/include -I/home/code/cpprestsdk/openssllib/include
#指定库文件
LIBS=-L/home/code/cpprestsdk/cpprestsdklib/lib -lcpprest$(Target):$(Objs)echo $(Objs)@mkdir -p output$(CC) $(Objs) $(LIBS) -o output/$(Target)%.o:%.cpp$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@clean:rm $(Objs)

因为boost和openssl库都是静态编译的,所以编译命令不需要跟boost和openssl(备注:运行的时候,会提示找不到libcpprest.so.2.10,这里需要临时设置一下环境变量:export LD_LIBRARY_PATH=实际目录)。


静态编译cpprestsdk模块
其实动态和静态编译只需要修改一下CMakeLists.txt文件即可,如下

if(IOS OR ANDROID)set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries")
else()set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries")
endif()

改成

if(IOS OR ANDROID)set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries")
else()set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries")
endif()

这里默认iOS和Android是静态编译,其他都是动态编译,不启用其他平台的动态编译即可。
Makefile文件需要改一下:

# 指定编译器
CC=g++
#指定编译选项
CFLAGS=-Wall -g
Target=res
Src:=$(wildcard ./*.cpp)
Objs:=$(patsubst %.cpp,%.o, $(Src))
#指定头文件位置
INCLUDES = -I/home/code/cpprestsdk/cpprestsdklib/include -I/home/code/cpprestsdk/boostlib/include -I/home/code/cpprestsdk/openssllib/include
#指定库文件
LIBS=-L/home/code/cpprestsdk/cpprestsdklib/lib -lcpprest -L/home/code/cpprestsdk/openssllib/lib -lssl -lcrypto$(Target):$(Objs)echo $(Objs)@mkdir -p output$(CC) $(Objs) $(LIBS) -o output/$(Target)%.o:%.cpp$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@clean:rm $(Objs)

一个疑问
为什么动态编译的时候,Makefile里面不用跟上openssl,静态编译就必须跟上了呢?

http://www.sczhlp.com/news/27516/

相关文章:

  • 模版做网站多少钱长沙seo排名优化公司
  • 浙江台州网站制作宁波seo网络推广报价
  • 跨境远程控制国内外电脑,用ToDesk轻松搞定!
  • 想要实现全球远控?且看ToDesk高效助力跨境设备互连互通!
  • 小程序制作119南宁seo公司
  • 网站建设全程揭秘facebook海外推广
  • 本人做静态网站开发优化网哪个牌子好
  • 网站建设作业怎么写软文推广多少钱一篇
  • 网站404页面模板网站搜索优化排名
  • 免费空间做网站有友情链接的网站
  • asp net做网站视频网络推广推广
  • 那些影视解析网站怎么做的四川省人民政府官网
  • 香港国际建设网站首页怎么弄一个自己的网站
  • 北京企业宣传片制作公司搜索引擎优化的分类
  • 手机如何建设网站大一网页设计作业成品
  • hexo vs wordpress百度关键词优化公司哪家好
  • 一般做网站多少钱国家免费培训机构
  • 网页设计资料下载网站百度seo点击器
  • 如何搜名字搜到自己做的网站淘宝宝贝关键词排名查询工具
  • 新网站如何做友情链接网站alexa排名查询
  • 【刷题笔记】树形 DP
  • 给自己的网站做代言百度知道一下首页
  • 柳市做网站的公司网站关键词优化软件效果
  • 哪个企业的网站做的比较好女排联赛最新排行榜
  • 本机电脑怎么做网站360优化大师历史版本
  • 做网站是com好还是cn好百度新闻网页
  • 商城网站建设定制网站建设天津百度推广排名优化
  • 呼叫中心外包长春seo排名公司
  • 怎么做免费网站如何让百度收录定制开发公司
  • 视频网站直播怎么做的网站链接交易