深入 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_DIR
  GTEST_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 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/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 语言和程序运行原理》。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android NDK项目创建的时候C++版本选择都有什么区别

Android ndk项目在创建的时候有C版本选择有4个选项,分别是Toolchain default, C11,C14,C17。 C是一种广泛使用的编程语言,它不断地发展和更新,以适应不同的需求和场景。C的语言标准是由国际标准化组织&…

2.qml 3D-View3D类学习

本章我们来学习View3D类。 View3D是用来渲染3D场景并显示在2D平面的类,并且该类可以放在QML2D下继承于Item子类的任何场景中,比如将View3D放在Rectangle中: Rectangle {width: 200 height: 200color: "red"View3D { anchors.fill: parent…

九章量子计算机:引领量子计算的新篇章

九章量子计算机:引领量子计算的新篇章 一、引言 随着科技的飞速发展,量子计算已成为全球科研领域的前沿议题。九章量子计算机作为中国自主研发的量子计算机,具有划时代的意义。本文将深入探讨九章量子计算机的原理、技术特点、应用前景等方面,带领读者领略量子计算的魅力…

什么是OV SSL证书?

OV SSL证书是组织验证SSL证书的缩写,是三个SSL验证级别之一的名称。 OV是指实名类型的SSL证书,这个实名其实只要证明发布者身份就可以签发,无论是个人还是企业都可以进行申请。 SSL证书大家都知道就是用于网站地址的http改成https加密协议的…

gromacs学习及使用(1)

1.Gromacs的使用 2.Gromacs 的第一步_能量最小化 3.分子动力学模拟Gromacs一般使用步骤(空蛋白) 4.GROMACS优化(没看懂) 5.GROMACS快速入门(有好东西) GROMACS中文教程 gmx editconf -f xxx -o xxx6.GROMACS运行参数之em.mdp文…

Burp Suite序列之目录扫描

如果你是一名渗透测试爱好者或者专业人士,你一定知道目录扫描是渗透测试中非常重要的一步。通过目录扫描,我们可以发现网站的敏感信息,隐藏的功能,甚至是后台入口。目录扫描可以帮助我们更好地了解目标网站的结构和漏洞。 但是&a…

四大视角看EMC设计:滤波、接地、屏蔽、PCB布局

电磁干扰的主要方式是传导干扰、辐射干扰、共阻抗耦合和感应耦合。对这几种途径产生的干扰我们应采用的相应对策:传导采取滤波,辐射干扰采用屏蔽和接地等措施,就能够大大提高产品的抵抗电磁干扰的能力,也可以有效的降低对外界的电…

Shell循环:for(三)

示例:使用for实现批量主机root密码的修改 一、前提 已完成密钥登录配置(ssh-keygen)定义主机地址列表并了解远程修改密码的方法 [rootlocalhost ~]# ssh-keygen #设置免密登录[rootlocalhost ~]# ssh-copy-id 192.168.151.151 二、演示…

【趣味JavaScript】一文让你读懂JavaScript原型对象与原型链的继承,探秘属性的查找机制! 《重置版》

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起学习和进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&a…

【Linux】第二十三站:缓冲区

文章目录 一、一些奇怪的现象二、用户级缓冲区三、用户级缓冲区刷新问题四、一些其他问题1.缓冲区刷新的时机2.为什么要有这个缓冲区3.这个缓冲区在哪里?4.这个FILE对象属于用户呢?还是操作系统呢?这个缓冲区,是不是用户级的缓冲区…

STM32 自定义UART数据格式(串口通信点亮LED实验)

起始位:0xaa告诉机器我们要开始传输数据了。 校验位:等于前几项数据位的相加。 结束位:结束传输。 自定义UART数据格式: 1》CPU与CPU之间 2》外设与CPU之间 这里举例,利用串口调试助手发送一串数据,…

Java数据结构之《循环队列》题目

一、前言: 这是怀化学院的:Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究,问题基本解决,若有bug欢迎下方评论提出意见,我会第一时间改进代码,谢谢!) 后面其他编程题只要我写完…

11.26电梯控制器设计分析

项目三 电梯控制器设计(*****) 设计一个多楼层的电梯控制器系统,并能在开发板上模拟电梯运行状态。可以利用按键作为呼叫按键,数码管显示电梯运行时电梯所在楼层,led灯显示楼层叫梯状态。 就是初始默认在1楼&#xff0…

【MySQL】MySQL安装 环境初始化

MySQL安装 MYSQL官网 安装完成后,傻瓜下一步即可 配置一下环境变量即可 (1) 初始化MySQL, 管理员身份运行 mysqld --initialize-insecure(2) 注册 mysqld mysqld -install# 如果记录以前的版本执行下面指令 mysqld -remove(3) 启动MySQL服务 // 启动mysql服务 net start …

Nginx配置文件全解析【深度剖析细节】

文章目录 💥 简介💫 基本结构🍉 事件处理器🥭 配置分析🍏 配置示例 🍉 HTTP服务器🥭 配置分析🍏 配置示例 🍉 虚拟主机 🍊 优化🍔 总结 &#x1f…

卡码网15 .链表的基本操作III

链表的基础操作III 时间限制:1.000S 空间限制:128MB 题目描述 请编写一个程序,实现以下链表操作:构建一个单向链表,链表中包含一组整数数据。 1. 实现在链表的第 n 个位置插入一个元素,输出整个链表的…

计算机基础知识62

模型层回顾:基本使用 # 模型层有orm框架:对象关系映射 数据库中:一个个表 :user表,book表,一条条的记录 程序中:一个个类,一个个对象 数据库中一张表---->程序中一个…

【JavaSE】:String类(一):基本使用方法

String类 一.String类的基本构成二.字符串比较1.比较相等2.比较大小 三.字符串查找四.字符串转换五.字符串替换六.字符串的拆分七.字符串的截取八.其他操作方法 在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以…

【软件推荐】卸载360软件geek;护眼软件flux;

卸载360软件geek f.lux: software to make your life better (justgetflux.com) 卸载完扫描残留 护眼软件 hf.lux: software to make your life better (justgetflux.com)https://justgetflux.com/https://justgetflux.com/

INFINI Labs 产品更新 | 修复 Easysearch 跨集群复制索引同步问题,Gateway 内存异常增长等问题

INFINI Labs 产品又更新啦~,本次更新主要对 Easysearch、Gateway、Console、Agent 等产品功能进行优化和相关 Bug 修复,解决了内存异常增长等问题,以下是详细说明。 INFINI Easysearch v1.6.2 INFINI Easysearch 是一个分布式的近实时搜索与…