深入 C 语言和程序运行原理 实战项目代码在CentOS 7上编译

cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core)uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64
在这里插入图片描述

安装gtest

参考博客《使用gtest和lcov测试代码覆盖率》
wget https://github.com/google/googletest/archive/refs/tags/release-1.11.0.tar.gz下载gtest源代码。
在这里插入图片描述

tar -zxf release-1.11.0.tar.gz进行解压。
在这里插入图片描述

cd googletest-release-1.11.0/googletest/进入源代码目录里边。
在这里插入图片描述

mkdir build && cd build创建build目录并且进入里边。
在这里插入图片描述

cmake ..发现报错如下:

CMake Error at CMakeLists.txt:132 (set_target_properties):set_target_properties called with incorrect number of arguments.

在这里插入图片描述

参考《googletest CMake Error at CMakeLists.txt:127 (set_target_properties)解决办法》解决问题。
sed -i '1i set(GOOGLETEST_VERSION 1.11.0)' ../CMakeLists.txtset(GOOGLETEST_VERSION 1.11.0)写入到第一行前边,head -n 1 ../CMakeLists.txt可以看一下内容。
在这里插入图片描述

rm -rf CMake*把缓存清空。
在这里插入图片描述

cmake ..执行。
在这里插入图片描述

make进行编译。
在这里插入图片描述

安装uriparser

wget https://github.com/uriparser/uriparser/archive/refs/tags/uriparser-0.9.6.tar.gz下载uriparser-0.9.6源代码。
在这里插入图片描述

tar -zxf uriparser-0.9.6.tar.gz进行解压,cd uriparser-uriparser-0.9.6/进入到解压的目录。
在这里插入图片描述

mkdir build创建build目录,cd build进入目录。
在这里插入图片描述

cmake -DCMAKE_BUILD_TYPE=Release .. -DURIPARSER_BUILD_DOCS=OFF报错如下:

CMake Error at /usr/local/share/cmake-3.25/Modules/FindPackageHandleStandardArgs.cmake:230 (message):Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIRGTEST_MAIN_LIBRARY) (Required is at least version "1.8.0")
Call Stack (most recent call first):/usr/local/share/cmake-3.25/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)/usr/local/share/cmake-3.25/Modules/FindGTest.cmake:270 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)CMakeLists.txt:264 (find_package)

cp /root/googletest-release-1.11.0/googletest/build/lib/*.a /usr/lib将生成的动态库复制到/usr/lib目录底下。
在这里插入图片描述
cmake -DCMAKE_BUILD_TYPE=Release .. -DURIPARSER_BUILD_DOCS=OFF发现还报错如下:

CMake Error at /usr/local/share/cmake-3.25/Modules/FindPackageHandleStandardArgs.cmake:230 (message):Could NOT find GTest (missing: GTEST_INCLUDE_DIR) (Required is at leastversion "1.8.0")
Call Stack (most recent call first):/usr/local/share/cmake-3.25/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)/usr/local/share/cmake-3.25/Modules/FindGTest.cmake:270 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)CMakeLists.txt:264 (find_package)

在这里插入图片描述

cp /root/googletest-release-1.11.0/googletest/build/lib/*.a /usr/local/lib将生成的动态库复制到/usr/local/lib目录底下。
在这里插入图片描述

rm -rf ./*把当前目录里边的内容删除。
在这里插入图片描述

vim ../CMakeLists.txtset(GTEST_INCLUDE_DIR /root/googletest-release-1.11.0/googletest/include/)添加对应的位置。
在这里插入图片描述

cmake -DCMAKE_BUILD_TYPE=Release .. -DURIPARSER_BUILD_DOCS=OFF正常运行。
在这里插入图片描述

cd ..回到上一级目录。
在这里插入图片描述

make进行编译。
在这里插入图片描述

make install进行安装。
在这里插入图片描述

编译源代码

git clone https://github.com/Becavalier/tiny-http-echo-server.git下载源代码。
在这里插入图片描述

cd tiny-http-echo-server/进入源代码目录里边。
在这里插入图片描述

mkdir build && cd build && cmake .. && cmake --build .进行编译。
在这里插入图片描述

./http-echo-server执行。
在这里插入图片描述

在自己本机的浏览器里边输入127.0.0.1:8080/?foo=1&num=10,然后按下回车,就可以显示出来结果。
在这里插入图片描述

此文章为12月Day 1学习笔记,内容来源于极客时间《深入 C 语言和程序运行原理》。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS系统环境搭建(二十二)——Git进阶

centos系统环境搭建专栏🔗点击跳转 文章目录 Git进阶1.更新代码2.只拉取Git仓库的部分目录内容2.1初始化空白仓库2.2配置git仓库2.3开启稀疏检出属性2.4设置指定拉取的目录2.5 更新代码 Git进阶 1.更新代码 基于上一篇文章CentOS系统环境搭建(二十一&…

全网最新最全面的Jmeter接口测试:json提取器元件及jsonpath介绍

json提取器元件介绍: json提取器与正则表达式提取器功能类似,也是用来截取响应信息的部分保 存到指定的变量中去,不同的是,它只能用来处理响应正文,并且响应正文必须 是json格式的。它的优势是能更快更灵活的截取json格…

算法通关村—如何使用中序和后序来恢复一颗二叉树

关卡名 理解树的特征 我会了✔️ 内容 1.理解树的结构、基本概念、性质以及存储方式 ✔️ 2.理解树的前中后三种遍历方式 ✔️ 3.理解如何使用前中序列和中后序列来构造树 ✔️ 1 树的常见概念 树是一个有n个有限节点组成一个具有层次关系的集合,每个节点有0…

unicloud云函数url化后,客户端通过url地址向云函数发送数据流并传递到云存储中

在不久前录制过这样一门课程,使用uniapp生态开发API接口,通过这套课程,你不需要后后端Java、Python、PHP等后端语言,你只需要用前端的知识就可以构建这样一套API接口,而且使用uniapp生态开发接口更简单高效&#xff0c…

windows配置使用supervisor

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、使用步骤1.安装supervisor-win2.配置supervisord3.配置program4.启动supervisord.exe5.supervisorctl.exe管控 二、后台启动总结 前言 windows使用supervi…

【你来了】舞台就是你的:深圳COC社区职言职语第2季劲爆来袭......

​ 职言职语第1季活动回顾 活动总结见:【活动总结】0723-COC深圳社区职言职语第1季活动总结之第1视角_架构师李肯-深圳城市开发者社区 (csdn.net) 活动介绍 🎉👥 欢迎加入职言职语第2季活动!与我们一起来探索职场的智慧和灵感&…

AntDB“超融合+流式实时数仓”——颠覆50年未变的数据库内核

流式处理引擎,颠覆50年未变的数据库内核 流式处理的概念 2001年9月11日,美国世贸大楼被袭击,美国国防部第一次将“主动预警”纳入国防的宏观战略规划。而IBM作为当时全球最大的IT公司,承担了大量基础支撑软件研发的任务。其中200…

【动态规划】LeetCode2552:优化了6版的1324模式

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 动态规划 本题其它解法 C前缀和算法的应用:统计上升四元组 类似题解法 包括题目及代码C二分查找算法:132 模式解法一枚举3C二分查找算法&am…

java数据结构(哈希表—HashMap)含LeetCode例题讲解

目录 1、HashMap的基本方法 1.1、基础方法(增删改查) 1.2、其他方法 2、HashMap的相关例题 2.1、题目介绍 2.2、解题 2.2.1、解题思路 2.2.2、解题图解 2.3、解题代码 1、HashMap的基本方法 HashMap 是一个散列表,它存储的内容是键…

【数据库】基于排序算法的去重,集合与包的并,差,交,连接操作实现原理,执行代价以及优化

基于两趟排序的其它操作 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏…

Jmeter工具+ant+jenkins实现持续集成

jmeterantjenkins持续集成 一、下载并配置jmeter 首先下载jmeter工具,并配置好环境变量;参考: jmeter默认保存的是.jtl格式的文件,要设置一下bin/jmeter.properties,文件内容,保存jmeter.save.saveservice.output_f…

Python for循环及用法详解

for-in 循环专门用于遍历范围、列表、元素和字典等可迭代对象包含的元素。 for-in 循环的语法格式如下 for 变量 in 字符串|范围|集合等:statements 对于上面的语法格式有以下两点说明: for-in 循环中的变量的值受 for-in 循环控…

分享86个清新唯美PPT,总有一款适合您

分享86个清新唯美PPT,总有一款适合您 86个清新唯美PPT下载链接:https://pan.baidu.com/s/1QEaXeWAekCbAWDD0iTgvMw?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整…

WEB渗透—反序列化(十)

Web渗透—反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩哔_…

如何解决SSL证书部署后未生效或网站显示不安全

本文介绍SSL证书部署后未生效或网站显示不安全的排查方法。 浏览器提示“您与此网站建立的连接不安全” 浏览器提示“无法访问此页面” 浏览器提示“这可能是因为站点使用过期或者不全的TLS安全设置” 浏览器提示“此页面上部分内容不安全(例如图像)”…

数据确权怎么理解?企业应该怎么做?

什么是数据确权? 所谓数据确权,就是确定数据的权利属性,主要包含两个层面:第一是确定数据的权利主体,即谁对数据享有权利。第二是确定权利的内容,即享有什么样的权利。 在数据生产、流通、使用等过程中&…

Linux系统:使用CloudDrive实现云盘本地挂载

此处以不使用Docker服务 系统: Ubuntu22.04 硬件信息: x86_64 1 安装CloudDrive CloudDrive下载地址 在服务器上安装fusemount3 sudo apt-get -y install fuse3下载对应版本的CloudDrive压缩包,我的机器为:clouddrive-2-linux-…

【Excel】WPS快速按某列查重数据

查重值 excel列几条数据肉眼可见,如何千万级别数据查验呢?平时很少用,记录一下: 先框选列要验证的数据,然后:开始->条件格式->突出显示单元格规则->重复值 效果

java元注解

一、注解 Annotation(注解)是 Java 提供的一种对元程序中元素关联信息和元数据(metadata)的途径和方法。 Annatation(注解)是一个接口,程序可以通过反射来获取指定程序中元素的 Annotation对象,然后通过该…

[山东大学操作系统课程设计]实验2

0.写在前面 其实昨天就把这篇写完了,可是遇到了一些突发事件,暂时还没想好自己的出路在哪,争取这两天把课程设计的实验全都写完吧。。。。。我知道大家现在都很难过,生活上,学业上,事业上。。。。但是还是…