精华内容
下载资源
问答
  • C和C++不安全?Android 支持 Rust 开发操作系统

    千次阅读 多人点赞 2021-04-13 15:38:35
    本文来自 CSDN资讯 Rust这两年实火了。 近年来,Rust凭借着出色的内存效率、速度与安全性,...而作为一个完善的移动操作系统,Android系统涉及到很多组件,可以广义地概括为两部分:生态系统及操作系统本身。 作为

    本文来自 CSDN资讯

    Rust这两年实火了。

    近年来,Rust凭借着出色的内存效率、速度与安全性,深受亚马逊、微软、华为、Facebook等科技巨头的青睐。Rust从根本上考虑安全性,提出了“没有数据竞争的并发性”、“没有垃圾收集的内存安全”及最终的“无恐惧的黑客“等概念,反映了Rust独特的学术研究和工业实用性结合价值。除了企业使用Rust语言的场景逐步扩大,操作系统也不例外。

    而作为一个完善的移动操作系统,Android系统涉及到很多组件,可以广义地概括为两部分:生态系统及操作系统本身。

    作为开发者来说,你开发Android的哪个部分决定了你所选择的编程语言;对于应用开发者来说,Java和Kotlin是比较流行的选择;而对于操作系统及其内部底层的开发者来说,C语言和C++语言是目前更受欢迎的选项。

    如今,谷歌为操作系统开发者增加了第3个选择:Rust。因为Android Open Source Project现在支持Rust语言来开发操作系统了。

    C和C++有哪些限制?

    Android系统的底层需要C和C++这样的系统编程语言,因为这类语言可以为开发者提供控制和可预测性,这在访问底层系统资源和硬件时非常重要。

    但问题是,C和C++并不能提供内存安全保证。这样一来使它们很容易出现错误和安全漏洞,开发者需要在复杂和多线程的代码库中管理这些语言的内存寿命,并非一件易事。

    C和C++构成了Android平台上数千万行代码,这使得一旦发生内存安全漏洞,就形成最难以解决的代码错误来源,占Android高严重度安全漏洞的70%左右。所以与其事后再解决这些Bug,不如从一开始就预防。

    因为缺乏内存安全保障,迫使开发者在严格约束和无权限沙盒内运行Android进程。但使用沙盒是成本很高的,不仅会消耗额外的开销还会引起延迟,并且不能完全消除代码的漏洞,而且由于Bug密度高,沙盒的有效性降低了,这样的情况让攻击者可以将多个漏洞连接起来。

    缺乏内存安全保障迫使开发者在严格受限和无特权的沙箱中运行Android进程。但是沙箱在资源上是昂贵的,消耗额外的开销并引入延迟。沙箱也没有完全消除代码的漏洞,而且由于漏洞密度高,沙箱的有效性降低了,进一步允许攻击者将多个漏洞链接起来。

    另一方面的限制是,为了检测到错误状态,必须在工具化的代码中实际触发才能被检测到。因此即使你的代码经过了严密的测试,也可能发现不了隐藏的Bug。而等到发现Bug的时候,修复他们又是一个漫长而高成本的过程了,而且还不一定能得到最准确的修复。

    这导致Bug的检测变得很不可靠,鉴于这些限制,事前预防Bug是最好的方法。针对这些问题,Rust这样的语言就到了发挥的时候了。

    从C和C++转向Rust,对Android意味着什么?

    为Android系统增加一种新语言,实际上是一项很艰巨的任务,包括工具链和依赖项需要维护、测试基础设施和工具必须更新、开发人员需要接受培训等。不过在谷歌方面,最近一年多时间里已经一直在大力推广Rust了。

    在谷歌看来,想要预防非安全语言编写软件的Bug,现在是内存安全编程语言切入的好时机。因为谷歌已经在其免费OSS-Fuzz服务的375个开源项目里发现了由内存安全错误引起的5500多个漏洞;还发布了Syzkaller来监测操作系统内核中的Bug,并通过gVisor等沙盒来减少Bug检测期间造成的实际影响。

    在使用Rust方面,谷歌用Rust将Android中的操作系统模块进行了优化,包括蓝牙和Keystore2.0,Keystore 2.0模块就是用Rust编写的;在底层的项目中使用Rust,如ChromeOS中的crosvm虚拟机监视器和驱动程序;包括curl的HTTP和TLS后端、以及Apache httpd新的TLS库,这些代码库位于Internet的网关,需要保护全球数百万用户的数据,它们的安全性极其重要。所以这些作为相关工作重要起点的代码库,均已开始接受Rust语言改造。

    虽然目标已经定下了,但谷歌方面也很明确,真正将Rust扩展到更多的操作系统,需要很多年的时间。

    而对于应用开发者来说,这样的切换不会改变其编写应用的方式,也不会改变框架API的工作方式,只是会影响操作系统的编写方式。根据Android开发者团队透露,谷歌目前也没有发布Rust NDK的计划,支持应用程序开发的语言还继续是Kotlin、Java、C和C++。

    展开全文
  • 现在出来工作实习后,接触比较多的是VSCode,这款软件能占用空间小,能支持主流的操作系统,安装库和配置文件也挺方便的,适合项目开发使用。 前言 VSCode刚安装完成时,只能起文本编辑器的作用,用来写写代...

    背景

    在大学时是使用Visual Studio 2015、OpenCV、C++来开发的,那时看到OpenCV官方推荐windows 64位系统安装Visual Studio进行开发。现在出来工作实习后,接触比较多的是VSCode,这款软件能占用空间小,能支持主流的操作系统,安装库和配置文件也挺方便的,适合项目开发使用。

    目录

    前言

    选择软件和版本

    安装步骤

    1、Visual Studio Code 安装、配置

    2、openCV 配置

    3、安装并配置MinGw 

    4、安装、配置cmake

    5、项目配置

    参考链接


    前言

    VSCode刚安装完成时,只能起文本编辑器的作用,用来写写代码;想要变成能开发OpenCV的IDE,需要我们安装插件、依赖库并手动设置参数。本文中主要目的是实现在windows中,有一个支持C++、OpenCV的开发环境。

     

    选择软件和版本

    Visual Studio Code - 1.43.2
    openCV - 3.4.9
    MinGw - 5.3.0
    cmake - 3.9.0 

    建议大家和这里版本保持一致;免去后面安装失败的惨剧。MinGw较新的版本是需要自己编译的,不能直接运行安装。

    大家可以到这里下载软件:https://download.csdn.net/download/qq_41204464/12298617

    等下也在网盘放一份,只是这个网盘限速,诶,大家可以衡量选择。

     

    安装步骤

    1、Visual Studio Code 安装、配置

    下载好VScode后,解压出来有一个可执行文件,执行安装后如下配置:安装 C/C++ 插件(C++ Intellisense 可选)

    如果对安装VScode不熟悉的朋友,可以点击参考我这篇博客 

    下图是配置好中文的VScode,准备安装C/C++ 插件

     

    2、openCV 配置

    执行opencv-3.4.9-vc14_vc15.exe 可执行程序,进行安装OpenCV;其实是把相关的文件解压出来,提供我们后面使用。

    安装的时候选择好路径就行了,尽量不要放置C盘;比如放置E:\software_install\opencv_3_4

     opencv\build\x64 路径下新建一个文件夹(可自起,这里是 MinGW),用来存放等下编译的文件

    3、安装并配置MinGw 

    执行mingw-w64-install.exe,如下配置

    • (版本)Version 选择 5.3.0
    • (架构)Architecture 32位cpu 选择 i686,64位cpu 选择 x86_64
    • (线程模式)Threads 如果使用 posix api 选择 posix,如果使用 win32 api 选择win32

    (异常处理机制) Exception 有三种,根据机器情况进行选择

    1. SJLJ (setjmp/longjmp) 兼容性好,32位或64位架构都可以使用,但速度慢
    2. DWARF (DW2, dwarf-2) 速度比SJLJ快,但只能用于32位架构,且有bug,尽量不用
    3. SEH (zero overhead exception) 速度很快,但只能用于64位架构;(编译版本)Build revision 选择最高的

    如果是 win10下的64位系统 建议选择 与图像上一致的选项。

    然后配置环境变量 系统的path 

    注意,这里的MinGW的安装路径,根据自己实际安装路径来填写到环境变量。

    检查是否配置成功

    win键 + R 输入 cmd 打开 命令行窗口

    能成功看到其版本了。

     

    4、安装、配置cmake

    解压好cmake,添加可环境变量

    注意,这里的cmake的安装路径,根据自己实际解压后路径来填写到环境变量。

    然后在命令窗口执行:cmake-gui.exe

    where is the source code: 选择 E:\software_install\opencv_3_4\sources ,即OpenCV安装的路径下的sources目录

    where to build the binaries: 选择

     

    点击 configure 按钮,按照下图所示进行选择

     

    选择 MinGW 中的 C 和 C++ 编译的exe程序

    我这边的路径:D:\Program Files\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw64\bin  ,需要根据自己的mingw安装路径进行选择:

    C:x86_64-w64-mingw32-gcc.exe
    C++ : x86_64-w64-mingw32-g++.exe

    设置完毕点击 Finish,耐心等待进度条读完,直到输出窗口看到 Configuring done

     

    再次点击 Configure 等待进度条读完。之后点击Generate 等待进度条读完,出现 Generating done

    这时,可以看到 opencv\build\x64\MinGW 的文件夹下新增了好多东西。


    修改OpenCV代码,来防止等下编译失败;注意适合于OpenCV3.4.9版本的;其他的版本不适合;

    解决方案:

    E:\software_install\opencv_3_4\sources\modules\photo\test\test_hdr.cpp  添加头文件

    #include <sys/time.h>

     

    在命令窗口,使用 cd 命令 切换到 E:\software_install\opencv_3_4\build\x64\MinGW,输入 minGW32-make 命令,这个时候大概花费 30 分钟左右的时间来编译,这个具体的时间和根据电脑的性能有关的。

    编译完成之后,输入 minGW32-make install 来完成安装。

     

    最后,配置环境变量 path :

    新添:E:\software_install\opencv_3_4\build\x64\MinGW\bin

     

    5、项目配置

    新建一个文件夹,用来放先关工程代码的。如:C++_OpenCV_template

    在vsCode中打开该目录

    新建 testOpenCv.cpp,copy如下代码:

    #include<opencv2/opencv.hpp>
    #include<opencv2/highgui.hpp>
    using namespace cv;
    int main()
    {
        Mat img=imread("sad.jpg");
        cv::imshow("image",img);
        cv::waitKey();
        return 0;
    }
    
    

    运行(Ctrl+F5),应该会报错并提示你生成 launch.json 文件,copy下面代码复制到 launch.json 中,将 "miDebuggerPath" 改成自己的。

    {
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            
            {
                "name": "(gdb) Launch",
                "type": "cppdbg",
                "request": "launch",
                "program": "${workspaceFolder}/${fileBasenameNoExtension}.o",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": true,
                "MIMode": "gdb",
                "miDebuggerPath": "D:/Program Files/mingw-w64/x86_64-5.3.0-posix-seh-rt_v4-rev0/mingw64/bin/gdb.exe",
                "preLaunchTask": "g++",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ]
            },
        ]
    }
    

    .vscode 文件夹(launch.json 的父目录)下,新建 c_cpp_properties.json,copy 如下代码,修改includePath的后三个路径为自己的,compilerPath 同理。

    {
        "configurations": [
            {
                "name": "win",
                "includePath": [
                    "${workspaceFolder}/**",
                    "E:\\software_install\\opencv_3_4\\build\\include",
                    "E:\\software_install\\opencv_3_4\\build\\include\\opencv",
                    "E:\\software_install\\opencv_3_4\\build\\include\\opencv2"                 
                ],
                "defines": [],
                "compilerPath": "D:/Program Files/mingw-w64/x86_64-5.3.0-posix-seh-rt_v4-rev0/mingw64/bin/gcc.exe",
                "cStandard": "c11",
                "cppStandard": "c++17",
                "intelliSenseMode": "clang-x64"
            }
        ],
        "version": 4
    }
    

    .vscode 文件夹(launch.json 的父目录)下,新建 tasks.json,copy以下代码,修改 “-I” 和 “-L” 的路径。

    {
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "2.0.0",
        "command": "g++",
        "args": [
            "-g", 
            "-std=c++11", 
            "${file}", 
            "-o", 
            "${fileBasenameNoExtension}.o",  
            "-I", "E:\\software_install\\opencv_3_4\\build\\include",
            "-I", "E:\\software_install\\opencv_3_4\\build\\include\\opencv2",
            "-I", "E:\\software_install\\opencv_3_4\\build\\include\\opencv",
            "-L", "E:\\software_install\\opencv_3_4\\build\\x64\\MinGW\\lib",
            "-l", "opencv_core349",
            "-l", "opencv_imgproc349",
            "-l", "opencv_imgcodecs349",
            "-l", "opencv_video349",
            "-l", "opencv_ml349",
            "-l", "opencv_highgui349",
            "-l", "opencv_objdetect349",
            "-l", "opencv_flann349",
            "-l", "opencv_imgcodecs349",
            "-l", "opencv_photo349",
            "-l", "opencv_videoio349"
      
        ],// 编译命令参数
        "problemMatcher":{
            "owner": "cpp",
            "fileLocation":[
                "relative",
                "${workspaceFolder}"
            ],
            "pattern":[
                {
                    "regexp": "^([^\\\\s].*)\\\\((\\\\d+,\\\\d+)\\\\):\\\\s*(.*)$",
                    "file": 1,
                    "location": 2,
                    "message": 3
                }
            ]
        },
        "group": {
            "kind": "build",
            "isDefault": true
        }
      }
      

    注意:如果是使用其他版本的OpenCV,把tasks.json中的349改为相应版本号;

    比如使用:OpenCV3.4.6;就把349改为346。

     

    如此,就可以按 Ctrl+F5 运行 testOpenCv.cpp,展示一张你选择的图片。刚才截了个拳王的图:

    nice成功了,刚才等待编译,来了一盘拳王,一年多没玩了突然想起好怀念。

    换一张图片:

     

    以下代码能打开笔记本摄像头:

    #include <opencv2\opencv.hpp>  
     
    using namespace cv;
    using namespace std;
     
    int main()
    {
        Mat frame;
        VideoCapture capture(0);//读取视摄像头实时画面数据,0默认是笔记本的摄像头;如果是外接摄像头,这里改为1
        
        while (true)
        {
            
            capture >> frame;            //读取当前帧
            if(!frame.empty()){          //判断输入的视频帧是否为空的
     
                imshow("window",frame);  //在window窗口显示frame摄像头数据画面
            }
     
            if(waitKey(20) == 'q')   //延时20ms,获取用户是否按键的情况,如果按下q,会推出程序 
    		break;
        }
        
        capture.release();     //释放摄像头资源
        destroyAllWindows();   //释放全部窗口
        return 0;
    }

     

    参考链接

    将 VSCode 打造成 OpenCV 的 IDE

    cmake+opencv+mingw部分error解决

    将Sublime Text 3打造成OpenCV3.2的IDE

    vscode 配置OpenCVC编译环境

     

    希望对你有帮助。

     

    展开全文
  • 上一个帖子提到了“硬件体系”相关的话题,今天来说说和操作系统相关的话题。C++跨平台开发中和OS相关的琐事挺多,所以今天会啰嗦比较长的篇幅,请列位看官见谅 :-) 为了不绕口,以下把Linux和各种Unix统称为Posix...

      上一个帖子提到了“硬件体系”相关的话题,今天来说说和操作系统相关的话题。C++跨平台开发中和OS相关的琐事挺多,所以今天会啰嗦比较长的篇幅,请列位看官见谅 :-)
      为了不绕口,以下把Linux和各种Unix统称为Posix系统。

      ★文件系统(FileSystem以下简称FS)
      刚开始搞跨平台开发的新手,多半都会碰上和FS相关的问题。所以先来聊一下FS。归纳下来,开发中容易碰上的FS差异主要有如下几个:目录分隔符的差异;大小写敏感的差异;路径中禁用字符的差异。
      为了应对上述差异,你要注意如下几点:
      1、文件和目录命名要规范
      在给文件和目录命名时,尽量只使用字母和数字。不要在同一个目录下放两个名称相似(名称中只有大小写不同,例如foo.cpp与Foo.cpp)的文件。不要使用某些OS的保留字(例如aux、con、nul、prn)作文件名或目录名。
      补充一下,刚才说的命名,包括了源代码文件、二进制文件和运行时创建的其它文件。
      2、#include语句要规范
      当你写#include语句时,要注意使用正斜线“/”(比较通用)而不要使用反斜线“/”(仅在Windows可用)。#include语句中的文件和目录名要和实际名称保持大小写完全一致。
      3、代码中涉及FS操作,尽量使用现成的库
      已经有很多成熟的、用于FS的第三方库(比如boost::filesystem)。如果你的代码涉及到FS的操作(比如目录遍历),尽量使用这些第三方库,可以帮你省不少事情。

      ★文本文件的回车CR/换行LF
      由于几个知名的操作系统对回车/换行的处理不一致,导致了这个烦人的问题。目前的局面是:Windows同时使用CR和LF;Linux和大部分的Unix使用LF;苹果的Mac系列使用CR。
      对于源代码管理,好在很多版本管理软件(比如CVS、SVN)都会智能地处理这个问题,让你从代码库取回本地的源码能适应本地的格式。
      如果你的程序需要在运行时处理文本文件,要留意本文方式打开和二进制方式打开的区别。另外,如果涉及跨不同系统传输文本文件,要考虑进行适当的处理。

      ★文件搜索路径(包括搜索可执行文件和动态库)
      在Windows下,如果要执行文件或者加载动态库,一般会搜索当前目录;而Posix系统则不尽然。所以如果你的应用涉及到启动进程或加载动态库,就要小心这个差异。

      ★环境变量
      对于上述提到的搜索路径问题,有些同学想通过修改PATH和LD_LIBRARY_PATH来引入当前路径。假如使用这种方法,建议你只修改进程级的环境变量,不要修改系统级的环境变量(修改系统级有可能影响到同机的其它软件,产生副作用)。

      ★动态库
      如果你的应用程序使用动态库,强烈建议动态库导出标准C风格的函数(尽量不要导出类)。如果在Posix系统中加载动态库,切记慎用RTLD_GLOBAL标志位。这个标志位会Enable全局符号表,有可能会导致多个动态库之间的符号名冲突(一旦碰到这种事,会出现匪夷所思的运行时错误,极难调试)。
      关于动态库的话题比较大,限于篇幅,以后单独写一个帖子讨论。

      ★服务/看守进程
      如果你不清楚服务和看守进程的概念,请看维基百科(这里这里)。为了叙述方便,以下统称服务。
       由于C++开发的模块大部分是后台模块,经常会碰到服务的问题。编写服务需要调用好几个系统相关的API,导致了与操作系统的紧密耦合,很难用一套代码搞定。因此比较好的办法是抽象出一个通用的服务外壳,然后把业务逻辑代码作为动态库挂载到它下面。这样的话,至少保证了业务逻辑的代码只需要一套;服务外壳的代码虽然需要两套(一个用于Windows、一个用于Posix),但他们是业务无关的,可以很方便地重用。

      ★默认栈大小
      不同的操作系统,栈的默认大小差别很大,从几十KB(据说Symbian只有12K,真抠门)到几MB不等。因此你事先要打听一下目标系统的默认栈大小,如果碰上像Symbian这样抠门的,可以考虑用编译器选项调大。当然,养成“不在栈上定义大数组/大对象”的好习惯也很重要,否则再大的栈也会被撑爆的。

      看到这里,可能有同学要问了,为什么没聊进程管理和多线程的话题?欲知后事如何,且听下回分解

    http://program-think.blogspot.com/2009/02/cxx-cross-platform-develop-5-os.html

    展开全文
  • C++实现简单的操作系统内核

    千次阅读 2019-09-17 23:30:23
    本Chat将带大家从0开始用尽量简单的方式实现一个简单的操作系统内核,以下为系列文章的目录。 简单的文本输出,实现HelloWorld,并在VirtualBox中运行。 实现内存段管理-GDT(全局描述表)。 硬件交流之-Ports(端口...
       C++是一门强大的系统级编程语言,学习一门语言最好的方式就是动手去实现一些小项目。   本Chat将带大家从0开始用尽量简单的方式实现一个简单的操作系统内核,以下为系列文章的目录。
    1. 简单的文本输出,实现HelloWorld,并在VirtualBox中运行。
    2. 实现内存段管理-GDT(全局描述表)。
    3. 硬件交流之-Ports(端口)。
    4. 中断实现。
    5. 驱动键盘。
    6. 驱动鼠标。7.

    阅读全文: http://gitbook.cn/gitchat/activity/5d7fb46ceaa0097c5b09b78a

    您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

    FtooAtPSkEJwnW-9xkCLqSTRpBKX

    展开全文
  • 基于Linux系统编写C/C++程序——基本操作编写思路1、创建文件夹及文件2、编写代码段3、编译 .C 文件4、执行编译文件 编写思路 1、创建一个文件夹,并在文件夹内创建一个 .c文件 2、在 .c文件 内编写代码段,并...
  • 使用C/C++开发的Web系统开源了

    千次阅读 2014-10-19 10:48:25
    C++开发的论坛系统 - BBS 当然你也可以直接进入下载地址:Fetch_source_code_release_vse2008_v1.2.1.7z 目前先暂存在百度云上,近期会放入github 当前版本的代码使用的标准C/C++在Windows上开发,使用的是Visual ...
  • C++开发环境

    千次阅读 2011-01-13 22:32:00
    C++开发环境: <br />1.Turbo C Turbo C是美国Borland公司的产品, 该公司在1987年首次推出Turbo C 1.0 产品, 其中使用了全然一新的集成开发环境, 即使用了一系列下拉式菜单,将文本编辑、程序编译...
  • C++开发的论坛系统 - BBS

    千次阅读 2013-09-03 14:25:09
    需要在系统启动之前,将数据放在系统的data文件夹下   压缩包内容包含: 全部可执行文件,.bat / .exe / .dll,内嵌WebServer,搜索引擎 全部资源文件,.html / .css / .js / .gif / .jpg 全部的...
  • 了解C++资源库提高C++开发效率

    千次阅读 2016-07-15 15:57:56
    C++ 标准模板库的核心包括以下三个组件: 组件 描述 ...C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。...它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作
  • 但是如果用Eclipse+CDT开发c/c++项目的时候,怎么能让Eclipse发挥代码自动提示的功能呢?其实也很简单:  打开终端:输入:$ gcc- v  得到类似的:gcc 版本 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16...
  • MDK中用C++开发STM32

    千次阅读 2020-05-07 09:03:18
    最近想开发一段单片机的代码,代码本身有很多的重复元素,这重复定义的一些结构体使用起来有些繁琐,所以就想用C++开发,C++的继承 模板类可以很容易的解决这些问题。因为在单片机运行,习惯用MDK或者IAR这些软件。...
  • Android C/C++开发指南

    万次阅读 2016-11-06 18:07:32
    Android C/C++开发指南 1.Android C/C++简介 众所周知,Android作为目前主流的移动终端领域的开发平台,其主要的开发语言就是JAVA。Android借助于JAVA高效、灵活的开发模式,迅速占领了移动互联网开发的半壁江山。...
  • Linux系统下OpenCV(c++)开发环境搭建

    千次阅读 多人点赞 2019-07-19 10:38:44
    Linux系统下opencv(c++)开发环境搭建 为了满足实际生产或者脱机运行的需要,搭建Linux系统下的Opencv十分必要,熟悉Linux系统下opencv...首先我们需要先搭建一个Linux的操作系统,Ubantu(乌班图)是一个以桌面应用为...
  • linux ubuntu 下c++ 开发环境

    千次阅读 2015-12-02 23:20:06
    Ubuntu中没用自带C/C++开发环境,需要用户自己配置。在UBUNTU中文论坛中的一些帖子集合。 一、安装基本开发环境 本人想学习一下Linux下的C,C++程序开发,这几天一直在研究Linux下的C语言编译环境的建立,...
  • c++ 开发中利用yaml-cpp读写yaml配置文件

    万次阅读 多人点赞 2019-04-25 14:27:47
    在程序员的开发生涯中,读写配置文件必不可少。 配置文件有利于我们灵活配置工程,解决大量重复...今天的博文介绍的是如何在 C++ 开发中利用 yaml-cpp 开源库读写 yaml 配置文件。 如果有 Python 开发经验的同学...
  • 如何在Linux系统下进行C++程序开发

    千次阅读 2013-12-09 09:09:17
    如何在Linux系统下进行C++程序开发 ... Linux是一类Unix计算机操作系统的统称,Linux操作系统的内核的名字也是“Linux”, 在Linux下进行C++开发,需要注意许多问题,比如:减少不必要的编辑动作,减少编辑的时间。
  • Linux 下C++开发入门指南

    万次阅读 2018-03-22 09:52:07
    本文目的是针对将熟悉C/C++语法,如何在...Linux下的开发和在Windows下的开发类似,主要区别点在于操作系统不同,开发工具,开发API,编译调试方法不一样,故主要将针对这些不同点进行阐述,使在Windows开发的程...
  • C++11开发中的Atomic原子操作

    千次阅读 2019-06-25 20:24:22
    C++11开发中的Atomic原子操作 Nicol的博客铭 原文https://taozj.org/2016/09/C-11%E5%BC%80%E5%8F%91%E4%B8%AD%E7%9A%84Atomic%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C/ 主题C++ 原子操作在多线程开发中经常用到,...
  • C++后端开发技术栈

    千次阅读 2020-04-16 19:53:52
    作为一名C++程序员,做后端开发,想在互联网开发热潮中有一席之地,就需要了解未来的工作所需要用到的一些技术栈。...2. linux操作系统,各种调试器(如gdb)和编译器工具(makefile,gradle) 3...
  • linux & windows C++开发差异

    千次阅读 2017-11-03 17:46:19
    关于平台之间的差异,主要是Windows平台和Unix平台之间的差异,这里着重介绍一下这两个平台在C/C++开发中存在的差异,其间会穿插介绍一些Unix不同分支之间的差异。 1.1语言特性的差异 语言特性的差异,指的是...
  • C++类库开发详解

    千次阅读 2015-05-25 22:57:46
    前言:这是一篇总结性的文章,需要有一点C++和dll基本知识的基础,在网上查阅了很多资料感觉没有一篇详细、具体、全面的dll开发介绍,我这是根据最近项目和网上资料整理出来的,并附带实例的一个总结性的文章(由于...
  • 今天来给大家分享一个使用WMI来获取Windows操作系统内核版本号的例子。 首先我们打开WMI测试器,连接ROOT\CIMV2命名空间,输入WQL查询语句SELECT * FROM Win32_OperatingSystem, 然后在查询的结果里我们找到...
  • c++串口操作

    千次阅读 2018-05-18 16:20:56
    0. 前言 做串口方面的程序,使用CreateFile打开串口通信端口。... 在Window 32bit 的操作系统上, 将串口(通信设备)作为文件来处理,所以串口的打开、关闭、读写所使用的API函数与文件操作一样。所以打开串...
  • 这个系列的文章预计有《C++基础》、《内存、STL、虚函数相关》、《数据结构与算法》、《操作系统与网络》四篇(后续可能会调整),每篇都是以问答的形式分享并给出了参考资料的链接地址。大部分问题回答的比较简洁.....
  • window下搭建C++开发环境

    万次阅读 2017-12-26 17:56:14
    其实很早之前就有打算系统的去学习C++的想法,一个是对这个的热爱,另一个是感觉学会C++可玩的更多,比如写jni、编写window小程序。之前看的电子版的c++ primer,后面感觉还是纸质版的看着舒服,所以前段时间入手了一...
  • Ubuntu16.04下配置VScode的C/C++开发环境

    万次阅读 多人点赞 2018-11-14 15:51:58
    VScode环境搭建1.Vscode安装2.Vscode环境配置安装c/c++插件建立工程 1.Vscode安装 Visual studio code是微软发布的一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑...
  • 在Tornado下的C++开发

    千次阅读 2010-11-25 11:46:00
    5.2 在Tornado下的C++开发 基本的C++支持被捆绑在Tornado开发环境里。VxWorks提供了包含对所有程序的C++安全声明的头文件和必须的run-time support.标准的Tornado交互式开发工具如调试器(debugger),...
  • C/C++后端-服务端开发技术博文分类汇总

    万次阅读 多人点赞 2019-10-24 10:24:17
    C/C++后端/服务端开发技术博文分类汇总:C语言基础、C++基础、算法与数据结构、Linux操作系统(网络)、数据库原理、设计模式、Git
  • C++游戏引擎开发

    千次阅读 2019-02-01 15:42:59
    C++游戏引擎开发

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 353,169
精华内容 141,267
关键字:

c++开发操作系统

c++ 订阅