• [技术干货] 华为云---云产品之计算
    购买并登录Windows弹性云服务器https://support.huaweicloud.com/help-novicedocument.html弹性云服务器(Elastic Cloud Server)是由CPU、内存、镜像、云硬盘组成的一种可随时获取、弹性可扩展的计算服务器,同时它结合虚拟私有云、虚拟防火墙、数据多副本保存等能力,为您打造一个高效、可靠、安全的计算环境,确保您的服务持久稳定运行。 购买并登录Linux弹性云服务器https://support.huaweicloud.com/basics-ecs/ecs_01_0103.html弹性云服务器(Elastic Cloud Server)是由CPU、内存、镜像、云硬盘组成的一种可随时获取、弹性可扩展的计算服务器,同时它结合虚拟私有云、虚拟防火墙、数据多副本保存等能力,为您打造一个高效、可靠、安全的计算环境,确保您的服务持久稳定运行。 自定义购买弹性云服务器https://support.huaweicloud.com/qs-ecs/ecs_02_0009.html如果您需要在服务器上部署相关业务,较之物理服务器,弹性云服务器的创建成本较低,并且可以在几分钟之内快速获得基于公有云平台的弹性云服务器设施,并且这些基础设施是弹性的,可以根据需求伸缩。下面介绍如何在管理控制台购买弹性云服务器。 快速购买弹性云服务器https://support.huaweicloud.com/qs-ecs/ecs_02_0004.html快速购买方式提供了以下几种配置类型的弹性云服务器,您可以根据您的实际应用场景选择适合您的云服务器配置类型。购买云耀云服务器 HECShttps://support.huaweicloud.com/qs-hecs/hecs_02_0001.html本节介绍如何在控制台购买云耀云服务器。云耀云服务器默认使用“包年/包月”的购买方式,云平台随机分配可用区、使用默认安全组、默认分配弹性公网IP。购买云耀云服务器为您提高了配置效率,可以在几分钟之内快速购买搭建了简单应用的云耀云服务器,更加方便快捷。初始化数据盘https://support.huaweicloud.com/qs-ecs/zh-cn_topic_0030831623.html如果您在创建弹性云服务器时添加了数据盘,待登录成功后,需要执行初始化数据盘操作,即格式化云硬盘,之后云硬盘才可以正常使用。通过云服务器创建Windows系统盘镜像https://support.huaweicloud.com/qs-ims/ims_qs_0001.html如果您已经创建了一台云服务器,并根据业务需要进行了自定义配置(如安装软件、部署应用环境等),您可以为更新后的云服务器创建系统盘镜像。使用该镜像创建新的云服务器,会包含您已配置的自定义项,省去您重复配置的时间。本指南以Windows操作系统为例,指导您通过云服务器创建Windows系统盘镜像。
  • [行业资讯] 面世一年,Windows 11“静悄悄”?
    撰文/ 陈邓新编辑/ 高 智Windows,一直是桌面操作系统的代名词。2022年6月24日,恰逢Windows 11正式发布一周年,但颇为尴尬的是,尽管微软不遗余力推广,可用户的接受程度似乎并不高。据AdDuplex的数据显示,2022年4月Windows 11运行在19.7%的PC上,增长较为缓慢,暂时没有撼动Windows 10霸主地位的迹象。那么,被微软寄予厚望的Windows 11,为何不受欢迎?或者说,用户为何拒绝免费升级?桌面操作系统之外,微软的生态体系还有哪些短板?对“Windows 10 Plus”没兴趣“Windows 11都出来了?不知道,反正我彻底禁止了自动更新。”范东昌如是说。坐标广州的白领范东昌,平时惯用的是一台笔记本电脑,自带正版Windows 10系统,一度对其又爱又恨,爱的是简单好用,恨的是三天两头要自动更新,还提示重启电脑生效。在其心中,一个优秀的系统应该是隐形的。“太流氓了,怎么都关不了,微软咋想的!”范东昌告诉锌刻度,动了注册表、关了升级服务,改了计划任务,上述操作只能延缓自动更新,并不能彻底禁止自动更新。一气之下,范东昌祭出“按流量计费”这一杀招。用于禁止自动更新如此一来,范东昌基本上摆脱了系统自动更新的骚扰,但也错过了重要的系统通知,连系统已迭代到Windows 11都不清楚。与范东昌不同,顾亚杰知晓Windows 11的存在。作为一名“90后”程序员,顾亚杰对互联网的一举一动都颇为关注,对Windows 11自然也颇有兴趣。但考量再三,还是选择了放弃。“Windows并没有什么颠覆性设计,与其说是一个新系统,不如说是Windows 10 Plus。”顾亚杰遗憾地说道。对此,知乎高赞回答也深表认同:“首先Windows 11不是正常迭代,本身Windows 11就是原来曝光的Windows 10 X 修改版本,原来太阳谷更新是Windows 10新版本的代号,但因为Windows 10X的夭折了,所以Windows 11 就出来了。”顾亚杰告诉锌刻度,Windows 11支持Android应用程序的运行,“将电脑打造得越来越像手机,是几个意思?那我不如直接用手机?”其实,微软一直渴望占据移动端。早在2010年,苹果的市值一举超越微软,《纽约时报》如此评论:“这是新时代的开始,也是旧时代的结束”,这之后微软对移动端念念不忘,跨平台、统一开发成为Windows系统的底层逻辑。这意味着,Windows系统的创新多聚焦在改善移动端体验上,而对桌面端的改变并不大,从而令其基本盘愈发保守。据知名游戏平台Steam的数据显示,Windows 10正式发布7个月内有超过30%的Steam用户选择升级,而同样的时间段仅有17.44%的用户选择升级 Windows 11,从游戏玩家的态度也可见一斑。换而言之,Windows 11并不受待见。硬件要求过高,老用户不如狗?其实,就算想拥抱Windows 11,也并非易事,对此方聪深有体会。正在武汉某大学读大二的土著方聪,打小就对新鲜事物感兴趣,宿舍电脑早早就升级到Windows 11,但家里的电脑却搞不定。之所以如此,与Windows 11门槛较高有莫大的关系。这其中,最为苛刻的当属TPM的标准必须为2.0版本,所谓TPM是一种特殊的安全芯片,负债存储开机密码、硬盘密码、登录密码等,是电脑安全运行的重要保障。“老电脑多是TPM1.0或1.2,更古早的电脑没有TPM。”一名木马专家告诉锌刻度,“TPM 2.0支持的加密算法种类更丰富,ECC P256、ECC BN256等都不在话下。”一言以蔽之,Windows 11的安全性更强。“道理我都懂,但我不可能为了一个系统,重新买台电脑吧!老用户不如狗!”方聪无奈地选择放弃。事实上,被拒之门外的并非少数。据Lansweeper的数据显示,调查的6万家企业约3000万台Windows设备,仅有44.4%能完全满足Windows 11的升级要求,实际安装率仅为1.44%,而Window10、Windows 7、Windows XP的安装率分别为80.34%、4.70%、1.71%。此外,升级后也不乏后悔之人,卢祎宁就是其中之一。卢祎宁是一家IT公司的员工,从事的是硬件研发工作,平时要用到一些仿真软件,“Bug多就不说了,居然好多仿真软件不能用了,就无语”。卢祎宁告诉锌刻度,其2021年11月就升级到了Windows 11,第一次运行就感觉稍微有的卡,“开个Word都要一两分钟,双击文件夹都有显示延迟”,之后发现笔记本电脑的电池续航时间大幅缩水等一系列问题。尽管后续Bug不断修复,但部分仿真软件不能兼容的问题依然没有彻底解决,最后卢祎宁不得不降级了系统,“如果你的系统只要用着还顺手,就不要升级了”。锌刻度发现,Windows 11每次升级都要修复大量Bug。譬如,Windows 11 KB5010386更新,修复了硬盘读写速度变慢、任务栏中的音量图标会显示为静音的错误、LDAP操作崩溃等问题。再譬如,Windows 11 KB5012643更新,修复了蓝屏死机、视频字幕被部分截断、用户无法单击最小化、最大化和关闭按钮的重大错误等问题。旧业务向左,新业务向右Windows 11 开局不利之外,微软当下还面临两大棘手问题。一个是,搜索掉队。微软推出Bing的初衷,意在改变谷歌在全球搜索领域一家独大的格局,然而持续多年投入难以计数的人力、财力,却依旧不温不火。究其原因,谷歌的先发优势太大,提前抢占了用户心智,Bing面对的是存量用户沉淀于谷歌、增量用户倾向于谷歌的尴尬局面。风投人士Vesting表示:“这就是网络效应,一款产品或服务用的人越多,价值越大,迭代速度越快,进而吸引更多人使用,形成一个正反馈。而要想抹平这个差距并非易事,哪怕谷歌也亦然,想当年谷歌进入中国之后市场份额一直落后于百度,2009年谷歌中国在国内的市场份额为32.3%,而百度的市场份额为63.9%,几乎相差一倍。”当然,先发优势并非不可撼动,历史上不乏弯道超车的案例。微软尝试了社交搜索、生态搜索等打法,渴望另辟蹊径寻找差异化竞争道路,但实际成效不大,看不到翻盘的希望。另外一个是,浏览器边缘化。在弯道超车上,谷歌给微软好好地上了一课:想当年,IE浏览器占据95%的全球浏览器市场份额,可谓一家独大,却不想谷歌的Chrome凭借更简洁、更快速、更安全等颠覆性设计,一跃成为最受欢迎的浏览器。据Statcounter的数据显示,2022年5月,全球浏览器TOP 3分别是谷歌的Chrome、微软的Edge浏览器与苹果的Safari浏览器,市场占有率分别为66.1%、10.11%、9.16%,双方的差距肉眼可见。以上可见,微软的基本盘依然没有起色,所幸赶上云计算的大潮,才避免成为互联网历史的尘埃。毕竟,云计算才是微软的第一大业务。据最新财报显示,2022年第一季度营业收入为493.6亿美元,同比增长18.35%;净利润为167.28亿美元,增长了8.22%;其中,微软Azure的营业收为191亿美元,而同期亚马逊AWS的营业收入为184亿美元。这意味着,微软的云计算业务超越了行业老大亚马逊。总而言之,微软新业务的进取与旧业务的颓势并存,一方面要与谷歌在多个维度角力,另外一方面要与亚马逊抢占云计算的高地。可惜的是,在这场复杂的博弈中,Windows 11似乎难以出力。(受采访者要求,文中范东昌、顾亚杰、方聪、卢祎宁皆为化名)       原文标题 : 面世一年,Windows 11“静悄悄”?
  • [问题求助] 【RPA产品】【版本功能】如果设计器是3.0版的,但是客户端是WIN7,能执行吗?
    【功能模块】RPA发布【操作步骤&问题现象】1、我的设计器是 3.0 版本的,但是客户的电脑部分是WIN7的, RPA程序可以发布并运行吗? 2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] Windows常用快捷键和常用的cmd命令(亲测用了办公效率提升明显)[转载]
    Widows常用快捷键Win + D :回到桌面(Win + M也可以实现回到桌面,不过Win + D 可以快速回到桌面,再按一次又能回到原网页,这是Win+M做不到的。)Win + E :打开文件资源管理器(计算机)(一键打开各种盘)Win + I: 打开设置Win + L : 锁屏(尤其是对于程序员来说,电脑里会有很多资料,办公室里有时会有外部人员进进出出,所以养成随时锁屏的习惯不仅能防止泄露公司机密,还能保证不会不小心丢失信息。还能防止他人看到你的烂代码)Win + R: 打开运行窗口Ctrl + P :打开打印视图Alt + Tab :任务切换Ctrl + C 和Ctrl +V :复制粘贴(程序员都懂得,CV大法好)Ctrl + Z 撤销(撤回你的误操作)Ctrl + F : 查找。可以查找文字很多地方可以用,浏览器里面也可以用。Ctrl+Shift+N: 打开想要新建文件夹的分区或者目录,一个“新建文件夹”就出现了。Ctrl+Alt+Del:三指合击大法,打开“任务管理器”,Win10支持通过 Ctrl+Shift+Esc一次打开任务管理器。Win +P : 打开“投影”,用投影仪以及玩双屏的用户肯定知道,很方便的快捷键。Win +左/右:贴靠窗口,窗口可以变为1/2大小放置在屏幕两侧。(不用手工拖拉了,挺香。Win+上/下按键可以上下把屏幕分成两半)Win + S :打开搜索 小娜。Win + X : 等于在左下角开始图标上面点击右键。Win + Shift + S: 召唤Windows自带截图。很香啊(换到win10之后,它自带的截图功能非常好用,快捷键 Win + Shift + S呼出,可以选择截屏幕的任意区域,任意形状,以及全面屏幕截图。截图之后可以马上进入编辑模式,不必登陆其他软件截图啦。)Win+A :打开操作中心(通知中心和常用的设置选项都会出现在操作中心里,可以快速调整电脑的联网状态和夜间模式等选项,用起来还是十分方便的。)常用的运行窗口命令大全按组合键 Win(Windows图标键)+R 键打开运行窗口。输入cmd按回车即可打开cmd命令提示符。PS‍:想在对应目录打开cmd命令窗口,可以直接在对应目录输入cmd,点击Enter键即可在对应目录打开cmd命令窗口。输入calc 按回车即可打开计算器功能。(calculator缩写,随时打开计算你丰厚的薪资。)输入appwiz.cpl:快速打开程序和功能,卸载掉你不想用的垃圾软件。输入cleanmgr: 打开磁盘清理工具,给你的磁盘瘦瘦身。输入shutdown -s:自动关机命令,关机骚操作。⚠️不需要关机的时候不要用。其他关机操作:shutdown -s -t 600:表示600秒后自动关机shutdown -a :可取消定时关机shutdown -r -t 600:表示600秒后自动重启rundll32 user32.dll,LockWorkStation:表示锁定计算机输入compmgmt.msc:打开计算机管理。输入control:打开控制面版。输入desk.cpl:进入屏幕分辨率设置。输入explorer:打开资源管理器。输入firewall.cpl:打开Windows防火墙设置。输入inetcpl.cpl:打开Internet属性。输入intl.cpl:设置区域和时间格式。输入msinfo32:查看系统详细信息。输入mspaint:打开画图。输入notepad:打开记事本。可以的快速记个东西很便捷。输入osk:打开屏幕键盘。输入perfmon:打开计算机性能监测器。输入powercfg.cpl:进入电源管理选项输入Rasphone:网络连接。输入regedit.exe或者regedt32:进入注册表编辑器。输入services.msc:进入本地服务设置,可以查看本地运行的服务。输入slui:查看系统激活信息输入snippingtool:截图工具,支持无规则截图。输入sysdm.cpl:进入系统属性。输入timedate.cpl:日期和时间设置。输入winver:进入关于Windows。常用的cmd命令ping 命令:用来验证与远程计算机的连接。ping 是Windows自带的一个DOS命令。利用它可以检查网络是否能够连通和分析网络速度,用好它可以很好地帮助我们分析判定网络故障。语法:ping [选项] [主机名称或IP地址]C:\Users\Administrator>ping 127.0.0.1正在 Ping 127.0.0.1 具有 32 字节的数据:来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64127.0.0.1 的 Ping 统计信息:    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),往返行程的估计时间(以毫秒为单位):    最短 = 0ms,最长 = 0ms,平均 = 0msnetstat命令:显示协议统计信息和当前 TCP/IP 网络连接语法:netstat [选项]常用参数:-a 显示所有连接和侦听端口。-n 以数字形式显示地址和端口号。-o 显示拥有的与每个连接关联的进程 ID。比如:查看监听端口以及监听对应的进程(PID)>netstat -ano | findstr 端口号taskkill命令:按照进程 ID (PID) 或映像名称终止任务。语法:taskkill [选项]常用参数:/F 指定要强行终止/T Tree kill: 终止指定的进程和任何由此启动的子进程。/IM image name 指定要终止的进程的名称。/PID process id 指定要终止的进程的PID。比如:终止 idea进程及子进程> taskkill /f /im idea64.exe /ttelnet 命令:查看ip和端口的连接情况。语法:telnet ip 端口比如:查看对ip156.45.90.239端口9000是否能够请求>telnet 156.45.90.239 9000初次使用需要按照如下步骤配置开启telnet命令:键盘输入Win+R,打开运行窗口,输入control进入控制面板。在控制面板界面,点击进入“程序和功能”。点击左侧“启用或关闭Windows功能”。找到名为“Telnet客户端”的功能并勾选,点击确定,即可完成开启telnet功能。本文内容到此结束了,如有收获欢迎点赞收藏关注✔️,您的鼓励是我最大的动力。如有错误❌疑问欢迎各位大佬指出。主页:共饮一杯无的博客汇总‍**保持热爱,奔赴下一场山海。**原文链接:https://blog.csdn.net/qq_35427589/article/details/125064093
  • [问题求助] 云速建站的网页 用chrome打开 ,网页 都错位了 是怎么回事? 用windows自带的浏览器打开就没事 ?
    云速建站的网页 用chrome打开 ,网页 都错位了 是怎么回事? 用windows自带的浏览器打开就没事 ?
  • [行业资讯] 联手腾讯,中兴将发货量超2亿套的操作系统,也开源了?
    近年来,芯片、操作系统等关键技术“卡脖子”现象越来越常见了,这导致我们在网络信息安全、自主可控方面,面临着越来越大的挑战。而使用自己的操作系统,自己的芯片,逐步替代国外的产品,成为了不可逆转的趋势。对于电脑而言,操作系统作为底层硬件与上层应用之间的连接者,是至关重要的,所以操作系统的自主化,非常关键。但大家都清楚,目前的国产操作系统,还难堪大任,按照机构的数据,截止至目前国内Windows操作系统的市场份额仍在90%以上。这是因为国产操作系统起步晚、底子薄,更重要的是在核心技术、终端产品和商业化等方面还有所欠缺。虽然国内出名的操作系统有6款,分别是麒麟、统信、普华、中科红旗、中科方德、中兴新支点,但在windows面前,一个能打都没有。那么如何来发展国产系统?有人认为,必须走开源的模式,然后大家合力,不能各自为政,这样吸引众多的企业一起参与,就像安卓的模式一样,这样才能够与windows竞争。所以在去年的时候,腾讯牵头,拉上宝德、北京初心、北京红旗、飞腾、浪潮、龙芯中科、OPPO、先进开源、中电科申泰、中科方德、兆芯等20余家操作系统生态厂商,搞了一个开源操作系统社区OpenCloudOS,这些合伙伙伴中有操作系统厂商,有芯片厂商,有应用厂商。目的是希望大家一起参与,推动操作系统开源,推动国产操作系统进步,打造出中立、开放、安全、稳定易用、高性能的国产 Linux 操作系统。而近日,中兴新支点也作为初始成员,正式加入了OpenCloudOS操作系统开源社区。中兴新支点有一款自己的操作系统,就叫做新支点,推出时间已经超过了10年,也是一款linux内核的操作系统,发货量超过了2亿套,国内的复兴号高铁都使用它。而加入OpenCloudOS操作系统开源社区,也就意味着中兴将这套操作系统也开源了,希望联手众多的合作伙伴,一起推动这个操作系统进步。       原文标题 : 联手腾讯,中兴将发货量超2亿套的操作系统,也开源了?
  • [行业资讯] 麒麟linux、统信UOS、windows生态对比:差距太大,1%都没有
    最近几年,国内掀起了一股国产替代大潮,大家的想法是从CPU到操作系统,尽量全部换成国产的,从而实现信息产业的自主可控。而操作系统,作为底层硬件和上层软件之间的连接层,一直被认为是重中之重,所以国产操作系统们,这几年动作也是非常多。比如双麒麟的合并(中标麒麟、银河麒麟合并为麒麟软件),还有统信UOS的成立,更是被大家认为是国产操作系统整合,并合力发展的一个开始。而从现在的情况来看,虽然各种套壳linux的国产操作系统非常多,但目前影响最大的两款国产系统应该是麒麟linux、统信UOS了。特别是这两款相对于其它国产系统而言,更加的注重个人桌面端,对windows软件、安卓软件进行了一些适配性的改造,所以也被网友认为,是最有可能替代windows的国产系统。而替代windows,其实并不是一个技术性的问题,而是一个生态性的问题。因为大家离不开windows的根本原因,不是windows有多好,而是windows的生态太丰富了,各种各样的软件都有,各种各样的硬件都支持。那么我们来比较一个麒麟软件、统信UOS、windows三大系统的软、硬件兼容数量,看看差距有多大。先说麒麟linux,按照官方的说法,目前兼容的软件数量(含适配的windows、安卓、linux软件)一共是117226款,而兼容适配的硬件一共是315855款,合计为433081。而统信UOS的目前适配兼容的软、硬件一共是227794款,其中桌面操作系统的适配数量为182066个,服务器版适配数量为46121个,其中软件数约为7.1万,硬件数量约为15.7万多。那windows呢?截止至2021年底,windows下的软件高达3500万个,而适配的硬件数量高达1600万,合计超过5000万。对比之下,意味着麒麟linux的适配数量不卡windows的1%,而统信UOS的适合数量则不足0.5%。单说软件,则差更远,麒麟liunx软件数量约为windows的0.3%,UOS的软件数约为windows的0.2%。对于操作系统而言,软件多、软件全,支持的硬件多,支持的硬件全,才是根本,而根据机构之前的分析,就算抛开一些不日常使用的软件,真正将大家日本软件覆盖,需要的软件数量也至少要超过100万,而硬件数量要超过50万,所以从这一点来看,国产系统还差得比较远。而上图是截止至2021年1月份,国内操作系统的市场情况,大家可以看到windows占了90%+的份额,linux(含国产系统)只占了1.43%的比例,可见差的实在是太远了。       原文标题 : 麒麟linux、统信UOS、windows生态对比:差距太大,1%都没有
  • [技术干货] windows清理系统垃圾bat脚本及使用步骤(转载)
    目录bat (批处理文件类型)一、针对电脑小白的系统垃圾清理二、使用步骤总结bat (批处理文件类型)批处理文件,在DOS和Windows(任意)系统中,.bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件的扩展名为bat 或cmd。比较常见的批处理包含两类:DOS批处理和PS批处理。PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本;而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本。更复杂的情况,需要使用if、for、goto等命令控制程式的运行过程,如同C、Basic等高级语言一样。如果需要实现更复杂的应用,利用外部程式是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。批处理程序虽然是在命令行环境中运行,但不仅仅能使用命令行软件,任何当前系统下可运行的程序都可以放在批处理文件中运行。一、针对电脑小白的系统垃圾清理12345678910111213141516171819@echo off      echo 正在进行系统垃圾清除,请耐心等待......      del /f /s /q %systemdrive%\*.tmp      del /f /s /q %systemdrive%\*._mp      del /f /s /q %systemdrive%\*.log      del /f /s /q %systemdrive%\*.gid      del /f /s /q %systemdrive%\*.chk      del /f /s /q %systemdrive%\*.old      del /f /s /q %systemdrive%\recycled\*.*      del /f /s /q %windir%\*.bak      del /f /s /q %windir%\prefetch\*.*      rd /s /q %windir%\temp & md %windir%\temp      del /f /q %userprofile%\cookies\*.*      del /f /q %userprofile%\recent\*.*      del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"     del /f /s /q "%userprofile%\Local Settings\Temp\*.*"     del /f /s /q "%userprofile%\recent\*.*"     echo 清除系统垃圾完成!      echo. & pause二、使用步骤1.新建文本 “垃圾清理.txt”2.复制如上代码3.更改后缀名为.bat “垃圾清理.bat”4.运行即可
  • [技术干货] 如何编译【跨平台】的动态库和应用程序
    目录· 示例代码mylibmyapp· Linux 下构建过程cmake 配置make 编译编译、执行· Windows 下构建过程cmake cofigurebuild调试别人的经验,我们的阶梯!大家好,我是道哥,今天我为大伙儿解说的技术知识点是:【使用 cmake 来构建跨平台的动态库和应用程序】。在很久之前,曾经在B站上传过几个小视频,介绍了在Windows和Linux这两个平台下,如何通过cmake和make这两个构建工具,来编译、链接动态库、静态库以及可执行程序。视频中的示例代码是提前写好的,因此重点就放在构建(Build)环节了。主要是介绍了动态库与动态库之间、应用程序与动态库之间的引用等等。对动态库、静态库比较熟悉的小伙伴,应该很容易就能理解其中的内容。但是对 C 语言不熟悉的朋友,看起来还是有一点点障碍。这篇文章,主要是把视频中的示例代码进行简化,只使用一个动态库和一个可执行文件,使用cmake构建工具,演示在 Windows 和 Linux 这两个平台下的构建过程。本文的内容很基础,算是使用 cmake 来构建跨平台程序的入门教程吧!示例代码首先看一下测试代码的全貌:mylib:只有一个源文件,编译输出一个动态库;myapp:也只有一个源文件,链接 mylib 动态库,编译输出一个可执行程序;mylib在mylib目录中,一共有3个文件:mylib.h, mylib.c 以及 CMakeLists.txt,内容分别如下:以上这个代码,主要是用在Windows系统的动态导出库,在 Linux 系统中,不是必要的。补充:在 windows 系统中,编译动态库时会生成 xxx.dll 和 xxx.lib。xxx.dll 中是真正的库文件指令,xxx.lib 中仅仅是符号表。具体来说:在 Windows 系统中,当编译动态库的时候,打开(定义)宏 MYLIB_EXPORT,下面这个宏生效:#define MYLIB_API __declspec(dllexport)这样的话,两个函数 my_add 和 my_sub 的符号才可能被导出到 mylib.lib 文件中。当这个动态库被应用程序(myapp)使用的时候,myapp.c在 include  mylib.h 的时,关闭宏 MYLIB_EXPORT,此时下面这个宏就生效:#define MYLIB_API __declspec(dllimport)为了简化宏定义的复杂度,这里就不考虑静态库了。看完了头文件,再来看看源文件mylib.c:最后再来看一下mylib/CMakeLists.txt文件:关于cmake的语法就不多说了,这里只用到了其中很少的一部分。注意其中的一点:ADD_DEFINITIONS(-DMYLIB_EXPORT),因为这个CMakeLists.txt是用来编译动态库的,因此在Windows平台下,每一个导出符号的前面需要加上 __declspec(dllexport),因此需要打开宏定义:MYLIB_EXPORT。myapp应用程序的代码就更简单了,只有两个文件:myapp.c 和 CMakeLists.txt,内容如下:HelloWorld级别的代码,不需要多解释!CMakeLists.txt内容如下:最后一行 TARGET_LINK_LIBRARIES(${PROJECT_NAME} mylib) 说明要链接mylib这个动态库。那么到哪个目录下去查找相应的头文件和库文件呢?通过这两行来指定查找目录:这个两个目录暂时还不存在,待会编译的时候我们再手动创建。可以让 mylib 在编译时的输出文件,自动拷贝到指定的目录。但是为了不把问题复杂化,某些操作步骤通过手动操作来完成,这样也能更清楚的理解其中的链接过程。最后就剩下最外层的CMakeLists.txt文件了:它所做的主要工作就是:根据不同的平台,定义相应的宏,并且添加了mylib和myapp这两个子文件夹。Linux 下构建过程cmake 配置为了不污染源文件目录,在最外层目录下新建build目录,然后执行cmake指令:此时,在build目录下,产生如下文件:CMakeCache.txt  CMakeFiles  cmake_install.cmake  Makefile  myapp  mylibmake 编译我们可以分别进入mylib和myapp目录,执行make指令来单独编译,也可以直接在build目录下编译所有的目标。现在就直接在build目录下编译所有目标:$ cd ~/tmp/cmake_demo/build$ makeScanning dependencies of target mylib[ 25%] Building C object mylib/CMakeFiles/mylib.dir/mylib.c.o[ 50%] Linking C shared library libmylib.so[ 50%] Built target mylibScanning dependencies of target myapp[ 75%] Building C object myapp/CMakeFiles/myapp.dir/myapp.c.o~/tmp/cmake_demo/myapp/myapp.c:4:19: fatal error: mylib.h: 没有那个文件或目录#include "mylib.h"                  ^compilation terminated.myapp/CMakeFiles/myapp.dir/build.make:62: recipe for target 'myapp/CMakeFiles/myapp.dir/myapp.c.o' failedmake[2]: *** [myapp/CMakeFiles/myapp.dir/myapp.c.o] Error 1CMakeFiles/Makefile2:140: recipe for target 'myapp/CMakeFiles/myapp.dir/all' failedmake[1]: *** [myapp/CMakeFiles/myapp.dir/all] Error 2Makefile:83: recipe for target 'all' failedmake: *** [all] Error 2从提示信息中看出:已经编译生成了 ./mylib/libmylib.so 文件,但是在编译可执行程序 myapp 时遇到了错误:找不到 mylib.h 文件!在刚才介绍myapp/CMakeLists.txt文件时说到:应用程序查找头文件的目录是 myapp/include, 查找库文件的目录是 myapp/lib。但是这2个目录以及相应的头文件、库文件都不存在!因此我们需要手动创建,并且把头文件mylib.h和库文件libmylib.so拷贝进去,操作过程如下:$ cd ~/tmp/cmake_demo/myapp/$ mkdir  include lib$ cp ~/tmp/cmake_demo/mylib/mylib.h ./include/$ cp ~/tmp/cmake_demo/build/mylib/libmylib.so ./lib/注意:刚才编译生成的库文件libmylib.so是在build目录下。准备好头文件和库文件之后,再次编译一下:$ cd ~/tmp/cmake_demo/build/$ make[ 50%] Built target mylib[ 75%] Building C object myapp/CMakeFiles/myapp.dir/myapp.c.o[100%] Linking C executable myapp[100%] Built target myapp此时,就在 build/myapp 目录下生成可执行文件myapp了。测试、执行$ cd ~/tmp/cmake_demo/build/myapp$ ./myappret1 = 7ret2 = 3完美!由于我们是在build目录下编译的,编译过程中所有的输出和中间文件,都放在build目录下,一点都没有污染源文件。Windows 下构建过程把Linux系统中的build文件夹删除,然后把测试代码压缩,复制到Windows系统中继续测试。在Windows下编译,一般就很少使用命令行了,大部分都使用VS或者VSCode来编译。打开 VSCode,然后打开测试代码文件夹 cmake_demo:因为需要使用cmake工具来构建,所以需要在VSCode安装 cmake 插件。(如何安装 VSCode 插件就不赘述了)第一步: cmake 配置按下键盘 ctrl + shift + p,在命令窗口中选择 Cmake: Configure,如果没看到这个选项,就手动输入前面的几个字符,然后就可以智能匹配到:在第一次 Configure 的时候,会弹出下面的选项,来选择编译器:我们这里选择 64 位的 amd64。配置的结果输出在最下面窗口中的output标签中,如下所示:这就表明cmake配置成功,正确的执行了每一个文件夹下的 CMakeLists.txt 文件。这个时候,来看一下资源管理器中有啥变化:自动生成了 build 目录,其中的文件如下:看来,流程与Linux系统中都是一样的,只不过这里是VSCode主动帮我们做了一些事情。第二步: 编译配置之后,下一步就是编译了。按下 shift + F7,或者单击VSCode底部的 Build 图标:弹出编译目标列表:这里选择 ALL_BUILD,也就是编译所有的目标:mylib 和 myapp,输出如下:来看一下编译的输出文件:mylib.dll 就是编译得到的动态链接库,mylib.lib是导入符号。myapp.exe 是编译得到的可执行程序。第三步: 执行我们先在命令行窗口中执行一下myapp.exe:提示错误:找不到动态链接库!手动把mylib.dll拷贝到myuapp.exe同一个目录下,然后再执行一次 myapp.exe:完美!但是,既然已经用VSCode来编译了,那就继续在VSCode中进行代码调试吧。按下调试快捷键 F5,第一次会弹出调试器选择项:选择 LLDB,然后弹出错误对话框:因为我们没有提供相应的配置文件来告诉VSCode调试哪一个可执行程序。单击[OK]之后,VSCode 会自动为我们生成 .vscode/launcher.json 文件,内容如下:把其中的program项目,改成可执行程序的全路径:"program": "F:/tmp/cmake_demo/build/myapp/Debug/myapp.exe"然后再次按下F5键,这回终于可以正确执行了:此时,就可以在mylib.c或者myapp.c中设置断点,然后进行单步调试程序了:
  • [热门活动] CANN体验官第四期学习笔记
         一直关注华为的昇腾产品的技术发展,从星火计划,到去年的4次cann训练营,cann体验官活动;到今年初的再次开班第一季cann训练营。感受到华为的技术实力,以及在建立生态上长期投入的决心。    这次又有cann体验官活动了,看内容真心为华为感到高兴:有新的Ascend 310P芯片,还有新的api。同时也感到非常荣幸能参加这次活动,共同见证新产品最后落地的过程。    学习的过程中会碰到各种问题,开发环境的建立,版本匹配,运行库目录配置,好多坑要过。静下心多看文档,问问老师,和同学们讨论讨论,发求助贴总能过的。调通了还是挺有成就感的。这次体验就边练边记,把过程和关键链接都放在帖子里,免得时间长忘记了。    首先是登录开发环境,这次有两种方式,白名单和VPN方式:都需要向小助手申请连接账号、连接参数。下面是小助手微信里发回的图:    刚开始在终端运行 ssh -p 20214 CANNTY0002@12x.6x.1xx.x1   。申请白名单的时候没注意,用了单位的ip是有多条出口的。估计等用的时候ip变了,没在白名单里,所以暂时连接失败。和第二批一起用了个华为的ecs的固定ip再次申请,等白名单下来了再试试。     后来按照(ATC推理环境VPN登录使用说明.pdf)用VPN连接成功了。用的是SecoClient,拨号前先要在操作系统里开启证书服务:在win10(用win7没有做这步操作)的命令行里输入:services.msc,然后把Certificate Propagation的启动类型改自动,服务状态下的启动按键也点下:     然后导入SSL客户端个人数字证书:按小助手给我平台用户CANNTY0002,应该下载client02.p12;然后在命令行输入:inetcpl.cpl :    会提示输入密码:我的用户证书是client02.p12 ,对应密码是:davinci02,然后一路点确定 。    看到下面的图如果有这两项,SSL客户端证书就导入成功了。    下一步就安装SecoClient:会出现SVN provider网络适配器,继续点击安装,然后打开SecoClient的SSL VPN客户端。    Mac上也可以的:    然后配下VSCode里REMOTE的SSH连接参数:    编辑 ~/.bashrc , 把/usr/local/Ascend/ascend-toolkit/set_env.sh的内容和python路径加上去,运行下atc命令试试,这样开发环境基本搭好了。
  • [技术干货] openGauss数据库ODBC环境连接配置(Windows)
    Windows操作系统自带ODBC数据源管理器,无需用户手动安装管理器便可直接进行配置。操作步骤步骤一 下载客户端GaussDB驱动程序并进行安装:下载地址:cid:link_0 在本地(例如D:/download)下载ZIP文件后进行解压缩,解压缩后文件如下。由于本实验openGauss安装在ECS(openEuler ARM)上,所以进入Euler2.8_arm_64文件夹,显示如下:解压缩GaussDB-Kernel-V500R001C10-Windows-Odbc.tar.gz文件,显示如下:点击psqlodbc_x86.msi进行安装:默认设置,直到安装完毕。步骤二 打开驱动管理器。在配置数据源时,请使用对应的驱动管理器(假设操作系统安装盘符为C盘,如果是其他盘符,请对路径做相应修改):64位操作系统上进行64位程序开发,安装64位驱动程序后,使用64位的驱动管理器:C:\Windows\System32\odbcad32.exe 或者直接使用“控制面板 > 管理工具 > ODBC 数据源(64 位)。步骤三 配置数据源。在打开的驱动管理器上,选择“用户DSN > 添加 > PostgreSQL Unicode(x64)”,然后进行配置:Data Source:openGauss (数据源名称,可以自定义)。Database:db_tpcc (需要连接的Datebase名称)。Server:openGauss数据库服务器的公网IP,请根据实际情况填写。Pot:26000 (端口号)。User Name:joe (连接数据库的用户名,不能使用omm用户,需要在数据库中创建)Password:dbuser用户的密码,请根据实际情况填写。步骤四 验证并保存设置。点击Test,显示 Connection successful 表示设置成功:点击保存:配置成功!
  • [技术干货] Windows下配置ODBC数据源
    Windows操作系统自带ODBC数据源管理器,无需用户手动安装管理器便可直接进行配置。操作步骤步骤 1 下载客户端GaussDB驱动程序并进行安装:           下载地址:cid:link_0          在本地(例如D:/download)下载ZIP文件后进行解压缩,解压缩后文件如下。由于本实验openGauss安装在ECS(openEuler ARM)上,所以进入Euler2.8_arm_64文件夹,显示如下:解压缩GaussDB-Kernel-V500R001C10-Windows-Odbc.tar.gz文件,显示如下:点击psqlodbc_x86.msi进行安装:默认设置,直到安装完毕。步骤 2 打开驱动管理器。          在配置数据源时,请使用对应的驱动管理器(假设操作系统安装盘符为C盘,如果是其他盘符,请对路径做相应修改):          64位操作系统上进行64位程序开发,安装64位驱动程序后,使用64位的驱动管理器:C:\Windows\System32\odbcad32.exe 或者直接使用“控制面板 > 管理工具 > ODBC 数据源(64 位)。步骤 3 配置数据源。            在打开的驱动管理器上,选择“用户DSN > 添加 > PostgreSQL Unicode(x64)”,然后进行配置:Data Source:openGauss (数据源名称,可以自定义)。Database:postgres (需要连接的Datebase名称)。Server:openGauss数据库服务器的公网IP,请根据实际情况填写。Pot:26000 (端口号)。User Name:dbuser (连接数据库的用户名,不能使用omm用户,需要在数据库中创建)Password:dbuser用户的密码,请根据实际情况填写。步骤 4 验证并保存设置。点击Test,显示 Connection successful 表示设置成功:点击保存:配置成功!
  • [培训赋能] xxx伙伴三日集中赋能培训——初级阶段【第三课: 网页与Windows本地程序自动化】
    本课内容预览:网页元素定位;Xpath基础;常用Web网页自动化控件使用;常用桌面应用程序自动化控件的使用;样例与演练;
  • [执行问题] Anaconda3为Mindspore创建的环境,在Pycharm下编译通过,Vs Code下会报错
    在官网教程上找张量的代码在Vscode做测试报错,但是同样的环境在Pycharm可以跑通
  • [安装经验] windows10下基于Anaconda3的Mindspore1.7.0的安装经验
    前言最近想体验一下1.7.0版本,之前是1.6.1版本而且当时没有做环境管理,所以在调用的时候,有时候会和主机里的其它环境冲突于是想着趁着换一台主机就在Anaconda环境里重装一下安装过程进入cmd 为mindspore创建一个环境起名为mindsporeconda create -n mindspore python=3.9.0(注意Python版本,之前默认的它会安装3.9.12导致又重装)然后进入该环境 conda activate mindspore在官网找到对应的版本可以选用pip安装也可以选用conda安装,在此我选用conda安装指令复制粘贴:conda install mindspore-cpu=1.7.0 -c mindspore -c conda-forge输入y点击回车即开始安装,安装完成会输出“done”检验安装的有效性 输入:python -c "import mindspore;mindspore.run_check()"输出版本号+Successfully即表示安装成功测试从教程里扒拉下来的自动微分代码输出[6.]与案例结果一样,测试成功
总条数:540 到第
上滑加载中