Cxx
  • 2024-10-12cmake使用笔记
    cmake_cxx_flags常用值在CMake中,CMAKE_CXX_FLAGS是一个用于指定C++编译器选项的变量。你可以将不同的编译选项添加到这个变量中,以影响编译过程的行为。以下是一些常用的CMAKE_CXX_FLAGS值及其说明:1.优化选项1.-O0:禁用优化(默认选项)。2.-O1:启用一级优化。3.-O2:启用二
  • 2024-10-09C++编译并运行后出现Process finished with exit code 139 (interrupted by signal 11:SIGSEGV),程序意外终止.
    问题描述:        代码运行意外终止,报错信息为Processfinishedwithexitcode139(interruptedbysignal11:SIGSEGV)CMakeList文件如下:cmake_minimum_required(VERSION3.26)project(SLAM)set(CMAKE_CXX_STANDARD17)set(CMAKE_CXX_STANDARD_REQUIRED
  • 2024-09-16GCC安全编译选项
    以CMake为例,给出安全编译选项的定义。关闭RPATH特性。set(CMAKE_SKIP_RPATHTRUE)开启栈保护。set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-fstack-protector-strong")或者set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-fstack-protector-all")开启GOT表保护。set(CM
  • 2024-08-30CMake构建学习笔记11-minizip库的构建
    准确来说,minizip其实是zlib提供的辅助工具,位于zlib库的contrib文件夹内。minizip提供了更为高级一点的接口,能直接操作文件进行压缩。不过,有点麻烦的是这个工具并没有提供CMake构建的方式。那么可以按照构建giflib的方式,自己组织CMakeList.txt,正好这个项目的代码量并不多。另一个
  • 2024-08-29CMake构建学习笔记11-minizip库的构建
    准确来说,minizip其实是zlib提供的辅助工具,位于zlib库的contrib文件夹内。minizip提供了更为高级一点的接口,能直接操作文件进行压缩。不过,有点麻烦的是这个工具并没有提供CMake构建的方式。那么可以按照构建giflib的方式,自己组织CMakeList.txt,正好这个项目的代码量并不多。另一个
  • 2024-07-26Cxx primer-chap9-Sequential Containers
    容器就是某种特定类型的集合。容器之间会提供一些公用的接口,此外没有哪种容器是最优的,只有适合的:sequential容器类型:各个容器的优缺点概览:,其中array和forward_list是新标准添加的。库实现的容器较快,鼓励使用:一些经验之谈,其中vector擅长随机访问,list删除随机增删,如果你不确
  • 2024-07-19CMake实用知识点之二
    1CMP00032ccache3string4list5include6CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT7if(MSVC)8set9CMAKE_BUILD_TYPE10CMAKE_CXX_FLAGS11定义预处理宏-D12测试框架CTest13CMakeDependentOption函数14CMAKE_ROOT15CMP0自动检测C++编译器00316GCC
  • 2024-07-158. 宏定义
    8.宏定义在进行程序测试的时候,我们可以在代码中添加一些宏定义,通过这些宏来控制这些代码是否生效。如下所示,新建一个文件test.cpp#include<iostream>intmain(){intnum=42;#ifdefDEBUGstd::cout<<"这是一个DEBUG信息"<<'\n';#endifstd::cout<<
  • 2024-07-152. CMake 的简单使用
    2.CMake的简单使用我们创建一个工程目录,在里面定义一些简单的加减乘除运算,然后定义一个main.cpp的文件:结构如下:tree/f.\D:\SOURCE\CMAKE_PROJ└─proj1add.cppCMakeLists.txtdiv.cpphead.hmain.cppmul.cpp
  • 2024-07-03[debug]解决cmake编译报错:can not be used when making a PIE object:recompile with -fPIC
    问题描述最近在跟施磊老师的高性能服务器项目,使用make命令后一直报错以下问题解决方法报错一大堆recompilewith-fPIC,多半是链接静态库是出错了。根据网上经验,在CmakeLists文件中加入-no-pie,但是两种方法进行尝试后都没有效果。#第一种方法add_compile_options(-fPIC)#
  • 2024-06-17【CMake】变量
    1、CMAKE_CXX_STANDARD3.1版本新增target属性CXX_STANDARD的默认值。指定使用的C++规范。可选值如下:98:C++9811:C++1114:C++1417:C++1720:C++2023:C++23如果CXX_STANDARD指定的标准编译器不支持时,则会自动向下调整为编译器支持的版本,如果不想让标准自动调整,可以使用C
  • 2024-05-28iceoryx源码阅读(四)——共享内存通信(二)
    目录1 队列数据结构2 共享内存获取2.1 PublisherImpl::loan2.2PublisherImpl::loanSample2.3 PublisherPortUser::tryAllocateChunk2.4ChunkSender::tryAllocate3 消息发送逻辑3.1PublisherImpl::publish3.2PublisherPortUser::sendChunk3.3ChunkSender::send3.4ChunkDistri
  • 2024-05-17CMake Tutorial
    step1theminalprojectcmake_minimum_required(VERSION3.10)project(Tutorial)add_executable(Tutorialtutorial.cxx)specifyingc++standardset(CMAKE_CXX_STANDARD11)set(CMAKE_CXX_STANDARD_REQUIREDTrue)projectversionproject(TutorialVERSION1.0)
  • 2024-05-13cmakelist的一个例子
    一个例子,仅做参考用: CMAKE_MINIMUM_REQUIRED(VERSION3.12)set(ProjName"NetworkTest")project(${ProjName})string(FIND${CMAKE_CURRENT_BINARY_DIR}"/"pos0REVERSE)MATH(EXPRpos0${pos0}+1)string(SUBSTRING${CMAKE_CURRENT_BINARY_DIR}${po
  • 2024-05-08iceoryx源码阅读(八)——IPC通信机制
    目录1 整体结构2 序列化与反序列化3 类Unix系统的实现3.1 发送函数send3.2 接收函数receive4 Windows系统的实现4.1 发送函数send4.2 接收函数receive5 Roudi的监听逻辑1 整体结构通过前面的介绍,订阅者、发布者与Roudi守护进程之间也需要通信,如上文介绍的,请求Roudi守护进村创建
  • 2024-04-14编译优化学习
    转自:https://juejin.cn/post/69331807676567388241.介绍代码->词法语法分析->语义分析->中间代码生成->目标代码生成编译器:中间代码生成。编译器会尝试对中间代码进行优化,通过减少无效或冗余的代码、计算强度优化等手段,以助于减少最终生成的指令数,或使用更高效的指
  • 2023-12-28elf与动态库大小裁剪
    老板最近看拼多多的包挺小的,扔了一篇文章过来让我们优化优化各自的动态库,美团这篇关于动态库大小缩减的文章,说的极好哈哈:https://tech.meituan.com/2022/06/02/meituans-technical-exploration-and-practice-of-android-so-volume-optimization.html#按需导出符号对库大小影响大
  • 2023-11-07Makefile
    代码Version1点击查看代码hello:main.cppprinthello.cppfatorial.cppg++-ohellomain.cppprinthello.cppfactorial.cpp代码Version2点击查看代码CXX=g++TARGET=helloOBJ=main.oprinthello.ofactorial.o$(TARGET):$(OBJ)$(CXX)-o$(TARGET)
  • 2023-11-02在CMake中配置使用Intel One API并启用OpenMP(阶段2)
    本示例尝试使用CMake配置使用IntelOneAPI编译器编译支持OpenMP的程序。环境VisualStudio2022CommunitywithC++desktopIntelOneAPI2023.2withVSintergrationCMake3.27.7样例程序代码OpenMPDemo.cpp//File:OpenMPDemo.cpp//Coding:utf-8#include<i
  • 2023-10-30cmake打印堆栈
    设置参数add_compile_options(-g)add_compile_options(-O0)add_compile_options(-no-pie)set(CMAKE_C_FLAGS"${CMAKE_C_FLAGS}-O0-g0")set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-O0-g0")set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-std=c++11
  • 2023-09-15简单介绍cmakelist的使用
    Windows平台1在文件夹中创建一个CPP文件;自己随便写一个主函数就行 写一个简单的c++main函数;2创建一个CMakeLists.txt文件,写上下列内容;可以使用notepad,会对一些字段自动补齐cmake_minimum_required(VERSION3.5FATAL_ERROR)Project(HELLOW-01LANGUAGESCXX)add_e
  • 2023-08-23编译Sophus报错: error: implicitly-declared 的参考解决方法
    一、问题描述自己在编译Sophus时遇到如下错误:/home/wong/Datum/third_party/Sophus-1.0.0-template/Sophus-1.0.0/test/core/test_so2.cpp:82:31:error:implicitly-declared‘Eigen::Map<constSophus::SO2<double>>::Map(constEigen::Map<constSophus::SO2<double&g
  • 2023-08-16SLAM十四讲 Sophus编译报错
    在学习SLAM十四讲的时候,需要使用Sophus,但是在编译Sophus的过程中,总是存在报错。在执行make-j2后,我遇到的错误提示其中有一段是:Eigen::Map<RxSO3Type>shallow_copy=map_of_rxso3;,还有cc1plus:allwarningsbeingtreatedaserrors解决的办法:打开CMakeLists.txt文件,修
  • 2023-08-13一个CPP Socket C/S程序
    虽然学了很多回了,但总是记不住。这里直接给个可以使用的CPPTCPsocket程序吧。使用cmake管理,但是我是个半吊子水平。在学习,例如CMakeTutorial程序结构PROG_HOME├──build #可以不自己创建,直接运行run.sh会给生成的。├──CMakeLists.txt #├──docs #
  • 2023-07-25CMake Error at CMakeLists.txt: No CMAKE_CXX_COMPILER could be found.
    系统环境:Ubuntu22.04.11.问题发生--TheCcompileridentificationisGNU11.3.0--TheCXXcompileridentificationisunknown--DetectingCcompilerABIinfo--DetectingCcompilerABIinfo-done--CheckforworkingCcompiler:/usr/bin/cc-skipped--