首页 > 系统相关 >记录 Linux zstd测试程序

记录 Linux zstd测试程序

时间:2023-11-23 11:45:22浏览次数:50  
标签:bin cmake zstd 测试程序 c++ Linux PATH include

系统版本

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

  1.linux命令行环境下 如何从github上获取源代码

  直接git clone 项目的github地址(http开头),如git clone https://github.com/facebook/zstd.git

 

  2.Linux安装cmake 3.5.2

  2.1直接安装centos  

sudo yum install cmake

  2.2直接安装ubuntu

sudo apt update
sudo apt install cmake

  2.3安装指定版本  (centos)  

# 查看当前版本
cmake --version

# 如果存在低版本,则需要先删除当前版本
yum -y remove cmake 

# 安装相关依赖
yum install -y gcc gcc-c++ build-essential autoconf libtool pkg-config

# 下载压缩包
wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz --no-check-certificate

# 解压
tar -zxvf cmake-3.5.2.tar.gz

# 安装
cd cmake-3.5.2
./bootstrap
make install 

# 验证是否安装成功
cmake --version

  2.4.cmake如果直接无法使用,需要添加到Linux的环境变量中

  比如cmake新安装在/usr/local/bin下,但是path中没有此目录  

echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

  下面列出三种添加方法:(我们配置时需要结合1-2或者1-3)

  1. 直接用export命令:(但是这种方法只会对当前用户及当前命令行窗口生效,退出后就会丢失)
    export PATH=/usr/local/bin:$PATH
  2. 编辑修改.bashrc文件:(这种方法只会对当前用户生效,需重启系统)
    vim /root/.bashrc 
    #在最后一行添上:
    export PATH=/usr/local/bin:$PATH
  3. 编辑修改profile文件:(这种方法对所有用户生效,需重启系统)
    vim /etc/profile
    export PATH=/usr/local/bin:$PATH

  

  3.库文件,生成zstd库文件

  静态库:Linux中是.a文件;windows中是.lib文件

  动态库:Linux中是.so文件;windows中是.dll文件

 

  4.编译生成测试代码

  保存好c文件后接下来就是编译成可执行文件,输入命令:gcc Hello.c -o hello,gcc是编译c文件的命令,若是.cpp文件则用g++,-o后面的hello就是可执行的文件名(可随意起一个filename);

  目前只有一个cpp,并且所有文件都在同一个目录。

g++ -std=c++11 -static main.cpp libzstd.a libz.a -o main -lpthread

  4.1.跨平台#include “stdafx.h”问题

  (1).替换头文件

  查看#include “stdafx.h”具体包含的内容,直接替换掉

#include <stdio.h>
#include <tchar.h>

  (2).添加头文件,名为:stdafx.h

  4.2.跨平台#include <io.h>问题

  将程序替换为: #include <sys/io.h>

  4.3.跨平台memset memcpy等问题

//使用如下2行即可 
#include<iostream> 
#include <cstring>

  4.4.跨平台fopen_s问题

  不同操作系统对于函数的定义、名称以及参数有所不同,需要在文件前加入代码:

#ifdef __unix
 
#define fopen_s(pFile,filename,mode) ((*(pFile))=fopen((filename), (mode)))==NULL
 
#endif

  4.5 跨平台搜索目录下项目

vector<string> getFiles(const string& path)
{
    vector<string> vPath;

#ifdef WIN32 
    struct _finddata_t fileinfo;
    auto handle = _findfirst(path.c_str(), &fileinfo);
    if (handle == -1)
    {
        return vPath;
    }

    do
    {
        vPath.push_back(fileinfo.name);
    } while (!_findnext(handle, &fileinfo));

    _findclose(handle);
#else 
    DIR *pDir;
    struct dirent* ptr;
    if (!(pDir = opendir(path.c_str())))
        return vPath;
    while ((ptr = readdir(pDir)) != 0) {
        if (strcmp(ptr->d_name, ".") != 0 && strcmp(ptr->d_name, "..") != 0)
            vPath.push_back(path + "/" + ptr->d_name);
    }
    closedir(pDir);
#endif

    return vPath;
}

  4.6.-std=c++11

  error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

  4.7.cmake cannot find -lxxx

  -l代表library,意思是没有找到对应的包。

  我们可以使用locate libxxx.a查看对应静态库的位置,并将其添加至LD_LIBRABY_PATH环境变量中。

  如果没有找到,则安装相关的环境。

  比如对于stdc++:

  centos:

yum install libstdc++-static

  Ubuntu:

sudo apt-get install libstdc++-11-dev

  4.8.跨平台pthread问题

  pthread不是Linux下的默认的库,也就是在链接的时候,无法找到phread库中哥函数的入口地址,于是链接会失败。
  解决:在gcc编译的时候,附加要加 -lpthread参数即可解决。

 

标签:bin,cmake,zstd,测试程序,c++,Linux,PATH,include
From: https://www.cnblogs.com/anyuemengying/p/17850966.html

相关文章

  • linux中透明巨页与巨页的区别
    在Linux中,透明巨页(TransparentHugePage)和巨页(HugePage)是两种不同的内存管理技术。透明巨页是Linux内核中的一项特性,旨在提高内存的利用率和性能。它通过将内存分配为更大的巨页(通常为2MB或1GB),减少了对内存页表的访问次数,从而提高了内存访问的效率。透明巨页是透明的,应用程序无需......
  • linux 拷贝命令
    基本操作最简单的把文件a复制到文件夹file_a中,使用:cpafile_a,即可。复制多个文件想把多个文件如a,b,c复制到文件夹file_a中,使用:cpabcfile_a,即可。复制一个文件夹下的多个文件如果我们想把文件夹file_a中的多个文件,如a,b,c复制到文件夹file_b中,该怎么办呢?用最土的方法,cpfile......
  • 个人Linux常用命令记录
    常用命令ls:列出当前目录中的文件。cd目录:切换当前工作目录到指定的目录。pwd:显示当前工作目录的路径。touch文件名:创建一个空文件或者更新文件的访问时间。mkdir目录名:创建一个新的目录。rmdir目录名:删除一个空目录。cp源文件目标文件:复制文件......
  • Linux-如何比较比较两个目录中的文件差异
    在Linux命令行中比较两个目录是一项常见的任务,特别是当你需要确保两个目录之间的文件完全相同时。本文我们将介绍一些在Linux命令行中比较两个目录的方法。方法一:使用diff命令比较两个目录diff命令可以比较两个文件或目录之间的差异。要比较两个目录,只需将两个目录作为......
  • Linux中启动KeyCloak
    版本信息WSL:2Linux:Ubuntu20.04LTSkeyCloak:21.1.2JDK:17.0.9Linux命令所有命令若有权限问题,前面加sudo即可rm-rfoldermvfoldertarget查看版本信息lsb_release-aJDK安装配置下载:wgethttps://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.ta......
  • Rocky Linux 8.9 发布 - CentOS 的权威替代
    RockyLinux8.9发布-CentOS的权威替代RockyLinux由CentOS项目的创始人GregoryKurtzer领导请访问原文链接:https://sysin.org/blog/rocky-linux-8/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org以社区方式驱动的企业LinuxRockyLinux是一个开源的企业......
  • Oracle Linux 8.9 发布 - Oracle 提供支持 RHEL 兼容发行版
    OracleLinux8.9发布-Oracle提供支持RHEL兼容发行版OracleLinuxwithUnbreakableEnterpriseKernel(UEK)&RedHatcompatiblekernel(RHCK)请访问原文链接:https://sysin.org/blog/oracle-linux-8/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgOracle......
  • Linux 搭建Traefik 工具 实现dashboard远程访问
    Træfɪk是一个云原生的新型的HTTP反向代理、负载均衡软件,能轻易的部署微服务。它支持多种后端(Docker,Swarm,Mesos/Marathon,Consul,Etcd,Zookeeper,BoltDB,RestAPI,file...),可以对配置进行自动化、动态的管理.Træfɪk支持docker一键部署,内置WebUI,管理相对......
  • linux查看mac物理地址
    1.使用ifconfig命令ifconfig命令是Linux系统中用于配置和显示网络接口信息的工具之一。您可以通过以下步骤查看MAC物理地址:打开终端,输入以下命令并按下回车键:ifconfig系统将列出当前系统中所有网络接口的详细信息,包括MAC物理地址。通常,MAC地址显示在以"ether"开头的一行中......
  • 畅谈Linux在小型微型企业中的应用
    在这篇文章里我们讨论和畅谈一下系统在小微型企业中的应用,为什么会写这篇文章呢?因为在平时的工作中,认识的一些做小微型企业的朋友,他们经常找我咨询或是去解决一些平时工作中的IT相关的问题,那么小微型企业中的IT环境都是都是什么样的呢?我来为大家说一下:一般的都是不超过十台电脑......