购物网站系统建设方案网站建设公司在哪里宣传

当前位置: 首页 > news >正文

购物网站系统建设方案,网站建设公司在哪里宣传,佛山品牌网站建设报价,青海西宁最新消息今天Linux下C开发 Linux 系统介绍 简介 Linux属于多用户多任务操作系统#xff0c;而Windows属于单用户多任务操作系统Linux一切皆文件目录结构 bin 存储二进制可执行文件dev 存放的是外接设备#xff0c;例如磁盘#xff0c;光盘等。在其中的外接设备是不能直接被使用的开发 Linux 系统介绍 简介 Linux属于多用户多任务操作系统而Windows属于单用户多任务操作系统Linux一切皆文件目录结构 bin 存储二进制可执行文件dev 存放的是外接设备例如磁盘光盘等。在其中的外接设备是不能直接被使用的需要挂载etc 主要存储一些配置文件home 表示除了root用户以外其它用户的家目录类似于Windows下的User/用户目录proc 全称process表示进程该目录存储的是Linux运行时候的进程root 该目录是root用户自己的家目录sbin 全称super binary该目录也存储一些可被执行的二进制文件但必须得有super权限的用户才能执行tmp 当系统运行时候产生的临时文件会存放在这个目录usr 存放的是用户自己安装的软件。类似于Windows下的program filesvar 该目录存放程序/系统的日志文件mnt 当外接设备需要挂载的时候就需要挂载在mnt目录下
常用命令 time ./hello 测试hello程序执行的时间ls -lah /home ./ 以列表形式显示多个目录-h表示以可读性较高的形式显示mkdir -p a/b/c 表示一次性创建多层不存在的目录mkdir a b c 创建多个目录man 全称an interface to the system reference manuals 作用包含了Linux中全部命令手册man man 查看man命令的手册man ls 查看ls命令的手册 reboot 立即重启shutdown -h now 立即关机gedit a.txt 用可视化文本编辑器打开a.txt 常用快捷键 ctrll 清屏ctrlc 退出当前行ctrlw 删除当前行一个单词ctrlshift 放大Terminal 【Ubuntu】ctrl- 缩小Terminal 【Ubuntu】ctrl 放大Terminal 【Mingw64】ctrl- 缩小Terminal 【Mingw64】ctrlaltt 开启Terminal 安装常用软件 sudo apt update 安装软件前最好更新软件库sudo apt install tree 安装可以以树形方式浏览多层目录sudo apt install build-essential gdb 安装好gcc,g,gdb 查看是否安装成功 gcc –versiong –versiongdb –version sudo apt install cmake 安装cmakesudo apt install libboost-dev 安装boost 开发环境搭建 GCC编译器

  • 编译过程 预处理-Pre-Processing // .i文件# -E 选项指示编译器仅对输入文件进行预处理 g -E test.cpp -o test.i // .i文件编译-Compiling // .s文件# -S 选项告诉g在为C代码产生了汇编语言文件后停止编译

    g 产生的汇编语言的默认扩展名为 .s

    g -S test.i -o test.s汇编-Assembling // .o文件# -c 选项告诉g仅把源代码编译为机器语言的目标代码

    默认情况下g建立的目标文件有一个 .o 的扩展名

    g -c test.s -o test.o链接-Linking // bin文件# -o 选项指定将来的可执行文件的文件名 g test.o -o test- g重要的编译参数 -g 编译带调试信息的可执行文件# -g 选项告诉GCC产生能被GNU调试器GDB使用的调试信息以调试程序 g -g test.cpp-O[n] 优化源代码# -O0 表示不做优化

    -Og 表示不做优化 【有些g版本不支持】

    -O1 为默认优化

    -O2 除了完成-O1的优化之外还进行一些额外的调整工作如指令调整等

    -O3 包括循环展开和其它一些与处理特性相关的优化工作

    g -O2 test.cpp-l 和 -L 指定库文件 | 指定库文件路径# -l参数(小写) 指定程序要链接的库名

    在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接

    g -glog test.cpp# 如果库文件没有放在/lib和/usr/lib和/usr/local/lib需要使用-L参数(大写)指定库文件所在的目录 g -L/home/balingshang/mylibfolder -lmylib test.cpp-I 指定头文件搜索目录# /usr/include目录一般不需要指定g知道去那里找

    其它目录需要自己指定

    g -I/myinclude test.cpp-Wall 打印警告信息sg -Wall test.cpp-w 关闭警告信息g -w test.cpp-stdc11 设置编译标砖# 使用 c11 标准编译 test.cpp g -stdc11 test.cpp-o 指定输出文件名g test.cpp -o test-D 定义宏# 在使用gcc/g编译的时候定义宏# 常用场景:

    -DDEBUG定义DEBUG宏可能文中有DEBUG宏部分的相关信息用-DDEBUG来选择开启或者关闭DEBUG#include iostream

    int main(int argc, char** argv) { #ifdef DEBUGstd::cout In Debug std::endl; #elsestd::cout Not In Debug std::endl; #endif } // 1. 在编译的时候使用 g -DDEBUG main.cpp // 2. 输出In Debugman g 查看其它编译选项man g- 生成静态链接库 g -c mylib.cppar rs libmylib.a mylib.o使用g main.cpp -lmylib -Lmylibfolder -Iinclude -o main- 生成动态链接库 g swap.cpp -Iinclude -fPIC -shared -o libswap.sog main.cpp -lswap -Lmysharedlibfolder -Iinclude -o dynamic_main使用LD_LIBRARY_PATHmysharedlibfolder ./dynamic_mainGDB调试器

  • 常用调试命令参数 开始调试执行gdb [exefilename]进入gdb调试程序其中exefilename为要调试的可执行文件名

    以下命令后括号内为命令的简化使用比如run®直接输入r就代表命令run\((gdb)help(h) # 查看命令帮助如help set\)(gdb)run® # 重新开始运行(run-text加载文本文件run-bin加载二进制文件)如果没有加断点程序就直接运行结束了\((gdb)start # 单步执行运行程序停在第一行执行语句 \)(gdb)list(l) # 查看源代码(list-n从第n行开始查看代码。list函数名查看具体函数)\((gdb)set # 设置变量的值\)(gdb)next(n) # 单步调试(逐过程函数直接执行)\((gdb)step(s) # 单步调试(逐语句跳入自定义函数内部执行)\)(gdb)backtrace(bt) # 查看函数调用的栈帧和层级关系\((gdb)frame(f) # 切换函数的栈帧\)(gdb)info(i) # 查看函数内部局部变量的数值\((gdb)finish # 结束当前函数返回到函数调用点\)(gdb)continue© # 继续运行相当于F5\((gdb)print(p) # 打印值及地址\)(gdb)quit(q) # 退出gdb\((gdb)break(b)num # 在第num行设置断点\)(gdb)info breakpoints # 查看当前设置的所有断点\((gdb)delete(d) breakpoints num # 删除第num个断点\)(gdb)display # 追踪查看具体变量值\((gdb)undisplay # 取消追踪查看变量\)(gdb)watch # 被设置观察点的变量发生修改时打印显示\((gdb)i watch # 显示观察点\)(gdb)enable breakpoints # 启用断点\((gdb)disable breakpoints # 禁用断点\)(gdb)x # 查看内存 x/20xw 显示20个单元16进制每个单元4字节\((gdb)run argv[1] argv[2] # 调试时命令行传参\)(gdb)set follow-fork-mode child # Makefile项目管理选择跟踪父子进程(fork())Tips 编译时加上-g才能用gdb进行调试回车键重复上一命令 - 调试流程 方法1 gdb myexeb 13run调试会在第13行停住 方法2 gdb myexe gdb myexe -p pid continue © set args conf/gs_conf1.xml # 设置参数show args # 显示参数start调试会停在第1行 方法3 gdb –args testbreak mainrun

    VSCode

  • 安装 直接在Ubuntu软件中心下载即可因为vscode在Ubuntu中是首推软件

  • 工程(文件夹) 打开工程(文件夹) 控制台进入工程目录然后输入 code . 把当前目录作为工程打开 关闭工程(文件夹) File-Close Folder

  • 界面布局 菜单栏 File-Preferences 一些偏好设置View-Show Minimap 右侧打开预览缩略图View-Editor Layout 分屏操作Go-Go to File… 打开搜索文件面板Go-Go to Symbol in Workspace… 打开在工程搜索符号面板Terminal-New Terminal 打开一个命令终端Terminal-Split Terminal 把打开的命令终端再分一个屏出来 点击垃圾箱按钮就可以把其中一个终端关闭 Help-Welcome 打开Welcome界面在Welcom面板你可以找到最近打开的工程 侧边栏 Explorer OPENEDITORS 展示当前打开了哪些文件XXX 打开的文件夹名字以大写字母形式展示OUTLINE 展示当前打开文件的大纲比如有哪些类每个类有哪些成员TIMELINE 当你的仓库是用git来管理的时候可以展示一些修改的记录 Search 在整个文件夹中整体查找 Source Control 用git进行代码管理可以查看更改丢弃更改 Run and DebugExtensions 可以搜索插件INSTALLED 已经安装了哪些插件POPULAR 有哪些流行的插件RECOMMENDED 有哪些推荐的插件给你
    编辑区 编辑代码 状态栏 光标当前所在行和列空格是多少个字符UTF8编码LF 行尾只有换行符这是在Linux环境下C 表示你当前的编辑语言是CLinux 表示我们当前的系统是Linux

  • 安装插件 C/C Microsoft出品CMake twxs出品CMake Tools Microsoft出品

  • 快捷键 常用快捷键 ctrlshiftp 打开命名面板ctrlp 打开搜索文件面板 直接输入文件名跳转到文件? 列出当前可执行的动作! 显示Errors或Warnings也可以ctrlshiftm: 跳转到行数也可以ctrlg直接进入 跳转到symbol(搜索变量或者函数)也可以ctrlshifto直接进入: 根据分类跳转到symbol查找变量或者函数也可以ctrlshifto后输入:进入# 根据名字查找symbol也可以ctrlt ctrlt 打开在工程搜索符号面板ctrl反点 打开终端ctrlb 关闭/打开 侧边栏ctrlw 关闭当前文件alt上下箭头 当前行上下移动F2 变量统一重命名类似于重构变量命名F12 转到定义处 快捷键编辑器与窗口管理 打开一个新窗口ctrlshiftn关闭窗口ctrlshiftw新建文件ctrln切换出一个新的编辑器(最多3个)ctrl\ (也可以按住ctrl然后点击Explorer里的文件名)左中右3个编辑器的快捷键ctrl1 ctrl2 ctrl3 快捷键代码编辑相关 代码格式化shiftaltf或crtlshiftp后输入format xxx向上向下复制一行shiftaltup或shiftaltdown列选择shiftalt鼠标选择 快捷键光标相关 定义处缩略图只看一眼而不跳转过去altf12同时选中所有匹配ctrlshiftl 快捷键重构代码 找到所有的引用shiftf12跳转到下一个Error或Warning当有多个错误时可按f8逐个跳转 快捷键查找替换 查找ctrlf查找替换ctrlh整个文件夹中查找ctrlshifth 快捷键显示相关 全屏f11ZoomIn/ZommOutctrl /-

  • 调试 launch.json 创建launch.json 点击Run and Debug图标快捷键是ctrlshiftd点击creae a launch.json 超链接点击C(GDB/LLDB)launch.json生成在.vscode目录下 修改launch.json文件 修改program为\({workspaceFolder}/build/mycmakeexe加入preLaunchTask: Build加入miDebuggerPath: /usr/bin/gdb如果gdb可以默认找到就不需要配置 tasks.json 创建tasks.json 点击Terminal点击Configure Default Build Task...点击Create tasks.json file from template点击Others 修改tasks.json 删除自动生成的的tasks.json文件输入如下内容{version: 2.0.0,options: {cwd: \){workspaceFolder}/build},tasks: [{type: shell,label: cmake,command: cmake,args: [..]},{label: make,group: {kind: build,isDefault: true},command: make,args: []},{label: Build,dependsOrder: sequence,dependsOn: [cmake,make]}] }- 集成Git 安装Git sudo apt updatesudo apt install gitgit config –global user.name xxxgit config –global user.email xxxqq.comgit config –list 检查是否配置完成 CMake

  • 语法特性介绍 基本语法格式指令(参数1 参数2…) 参数使用圆括弧括起参数之间使用空格或分号分开 指令是大小写无关的参数和变量是大小写相关的set(HELLO hello.cpp) add_executable(hello main.cpp hello.cpp) ADD_EXECUTABLE(hello main.cpp \({HELLO})**变量使用\){}方式取值但是在IF控制语句是直接使用变量名

  • 重要指令和常用变量 重要指令(大小写无关) cmake_minimum_required-指定CMake的最小版本要求 语法cmake_minimum_required(VERSION versionNumber [FATAL_ERROR])# CMake最小版本要求为3.0 cmake_minimum_required(VERSION 3.0)project-定义工程名称并可指定工程支持的语言 语法project(projectname [CXX] [C] [Java])# 指定工程为HELLOWORLD project(HELLOWORLD)set-显式的定义变量 语法set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])# 定义SRC变量其值为main.cpp hello.cpp set(SRC main.cpp hello.cpp)include_directories-向工程添加多个特定的头文件搜索路径 相当于指定g编译器的-I参数语法include_directories[[AFTER|BEFORE] [SYSTEM] dir1 dir2…]# 将/usr/include/myincludefolder 和 ./include 添加到头文件搜索路径 include_directories(/usr/include/myincludefolder ./include)link_directories-向工程添加多个特定的库文件搜索路径 相当于指定g编译器的-L参数语法link_directories(dir1 dir2…)# 将/usr/lib/mylibfolder 和 ./lib 添加到库文件搜索路径 link_directories(/usr/lib/mylibfolder ./lib)add_library-生成库文件 语法add_library(libname [SHARED|STATIC|MODULE] [EXCLUDE_FROM_ALL] source1 source2 … sourceN)# 通过变量 SRC 生成 libhello.so 共享库 add_library(hello SHARED ${SRC})add_compile_options-添加编译参数 语法add_compile_options(…)# 添加编译参数 add_compile_options(-Wall -stdc11 -O2)add_executable-生成可执行文件 语法add_executable(exename source1 source2…sourceN)# 编译main.cpp生成可执行文件 add_executable(main main.cpp)target_link_libraries-为target添加需要链接的共享库 等同于g编译器的-l参数语法target_link_libraries(target library1debug|optimized library2…) # 将hello动态库链接到可执行文件main target_link_library(main hello)add_subdirectory-向当前工程添加存放源文件的子目录并可以指定中间二进制和目标二进制存放的位置 语法add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])# 添加src子目录src中需有一个CMakeLists.txt add_subdirctory(src)aux_source_directory-发现一个目录下所有的源代码文件并将列表存储在一个变量中这个指令临时被用来自动构建源文件列表 语法aux_source_directory(dir VARIABLE)# 定义SRC变量其值为当前目录下所有的源代码文件 aux_source_directory(. SRC)

    编译SRC变量所代表的源代码文件生成main可执行文件

    add_executable(main \({SRC})常用变量 CMAKE_C_FLAGS gcc编译选项CMAKE_CXX_FLAGS g编译选项# 在CMAKE_CXX_FLAGS编译选项后追加-stdc11 set(CMAKE_CXX_FLAGS \){CMAKE_CXX_FLAGS} -stdc11)CMAKE_BUILD_TYPE 编译类型(Debug,Release)# 设定编译类型为Debug调试时需要选择Debug set(CMAKE_BUILD_TYPE Debug)

    设定编译类型为Release发布时需要选择Release

    set(CMAKE_BUILD_TYPE Release)二进制目录 CMAKE_BINARY_DIRPROJECT_BINARY_DIRprojectname_BINARY_DIR 这三个变量指代的内容是一致的如果是in source build指的就是工程顶层目录如果是out of source编译指的是工程编译发生的目录PROJECT_BINARY_DIR 跟其它两个稍有区别不过现在你可以理解为他们是一致的 源代码目录 CMAKE_SOURCE_DIRPROJECT_SOURCE_DIRprojectname_SOURCE_DIR 这三个变量指代的内容是一致的不论采用何种编译方式都是工程顶层目录也就是在in source build时它跟CMAKE_BINARY_DIR等变量一致PROJECT_SOURCE_DIR 跟其它两个稍有区别不过现在你可以理解为他们是一致的 CMAKE_C_COMPILER指定C编译器CMAKE_CXX_COMPILER指定C编译器EXECUTABLE_OUTPUT_PATH可执行文件输出的存放路径LIBRARY_OUTPUT_PATH库文件输出的存放路径

  • CMake编译工程 CMake目录结构项目主目录存放一个CMakeLists.txt文件 两种方式设置编译规则 包含源文件的子文件夹包含CMakeLists.txt文件主目录的CMakeLists.txt通过add_subdirectory添加子目录即可包含源文件的子文件夹未包含CMakeLists.txt文件子目录编译规则体现在主目录的CMakeLists.txt中 编译流程 在Linux平台下使用CMake构建C/C工程的流程如下 手动编写CMakeLists.txt执行命令cmake PATH生成MakefilePATH是顶层CMakeLists.txt所在的目录执行命令make进行编译 两种构建方式 内部构建(in-source build)不推荐使用 内部构建会在同级目录下产生一大堆中间文件这些中间文件并不是我们最终所需要的和工程源文件放一起会显得杂乱无章 ## 内部构建# 在当前目录下编译本目录的CMakeLists.txt生成Makefile和其他文件 cmake .

    执行make命令生成target

    make外部构建(in-source build)推荐使用 将编译输出文件与源文件放到不同的目录中 ## 外部构建# 1. 在当前目录下创建build文件夹 mkdir build

    2. 进入build文件夹

    cd build

    3. 编译上级目录的CMakeLists.txt生成Makefile和其它文件

    cmake ..

    4. 执行make命令- CMake示例

    示例一## 目录结构include/swap.h src/swap.cpp main.cpp build/# CMakeLists.txt cmake_minimum_required(VERSION 3.0) project(SWAP) include_directories(include)

    或者include_directories(${CMAKE_SOURCE_DIR}/include)

    set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -g -O2 -Wall)

    或者set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wall)

    set(CMAKE_BUILD_TYPE Debug)

    add_executable(main_cmake main.cpp src/swap.cpp)# 执行 cd build cmake .. make ./main_cmake安装SSH sudo apt-get install openssh-server检查有没有启动sudo ps -ef | grep ssh 如果没有启动sudo service ssh start 开机启动sshsudo systemctl enable ssh xshell连接本地的wsl2 xshell连接本地的wsl2 延申阅读 VSCode在Windows下的快捷键VSCode在Linux下的快捷键