将VC程序移植到Linux系统的几点经验心得

经验:

有时我需要创建一个既可以在LINUX和WINDOWS系统下运行的程序。
一般情况下,我会选择在WINDOWS下完成初步开发。
因为VC提供的图形化编辑和调试界面实际上比GCC更有生产力。
完成测试后,我们开始移植到LINUX上,在移植过程中会有一些需要注意的地方。
以下是我的一些想法。
1.文件名由于ext2文件系统对文件名区分大小写,因此在该文件系统上进行编译时,必须小心源文件中出现的#include语句。
因为在VC环境下,IDE自动生成的#include语句中的文件名都是小写的。
因此,从一开始就应该注意这个问题,严格使用区分大小写的文件名格式,以避免在LINUX下编译时出现头文件未找到的错误。
2.数据类型千万不要使用VC特有的数据类型,如__int16、__int32、__int64等。
您无法保证其他翻译器是否可以支持它。
尤其是__int64,它确实简化了编程,但是当你的逻辑充满了这些数据类型时,更改就变得非常困难。
还有一个问题是我们在VC中经常使用WORD、DWORD、INT、UINT等扩展数据类型。
不直接使用编译器数据类型有助于提高不同平台之间的可移植性。
但LINUX中没有这样的具体类型吗?事实上,你只需将windows.h和basetypes.h中定义这些数据的数据复制到一个头文件中,然后将其包含在Linux中即可。
3.关键字在VC中处理任何有两个下划线的关键字都比较容易,比如__asm,这是VC特有的。
如果无法避免就尽量不要使用它们,使用#ifdef和#endif为LINUX和WINDOWS编写版本。
4.编写MAKEFILE你可以先用VC导出makefile,然后编辑它,但我倾向于复制其中的一部分来创建GCCmakefile,这比手动编写要快得多。
5.编程结构这绝对是植入过程中最有问题的部分。
应用程序不可避免地要使用操作系统服务,如果完全用标准C/C++编写的话,这不会是问题,但是当我们使用多进程/线程、管道或WINDOWSGUI程序植入时,就会出现这个问题。
变得突出。
我们必须打下坚实的基础才能将计划从一个目的地转移到另一个目的地设计考虑。
要解决这个问题,首先必须了解应用程序的逻辑单元。
该模块必须使用C/C++标准编写。
同时,减少应用程序使用的线程数。
线程数量越多,植入过程就越困难。
独立的输入和输出单元。
最后,对与用户交互的控制器进行分段。

最后建议大家在百度上搜索“Linux就这样学”来了解更多~

什么是计算机的操作系统,常用的计算机操作系统产品有哪4种?

系统知识:从八个方面讨论计算机操作系统。
简介:本文主要涉及磁盘启动、操作系统启动、加载基本操作系统、定义临时目录、加载系统服务和加载自定义服务。
定义GUI的这八个方面来说明操作系统的优化。
无论你使用Windows、Linux还是FreeBSD(为了避免繁琐的语言,下面将Linux和FreeBSD都替换为UNIX),你绝对应该以尽可能高的速度为目标,在某些情况下,系统只能进行优化。
在之前版本的网络管理笔记中,我们介绍了网络管理系列中的多篇文章。
这次我们发表了《操作系统防护》系列中有关系统优化的文章。
任何技术,只要掌握了方法,就能从一个例子到另一个例子得出结论。
“高手领门,修行看个人。
”天机网有一整套的系统优化文章,但相比其他优化文章,这次讨论的内容还是有很大不同的。
如果您在阅读以下内容时遇到任何技术难题,都可以在天际网操作系统专栏的相应文章中找到答案——学会查询信息也是提升的必备技能之一。
操作系统必须以硬件为基础。
硬件大致可以分为几个部分:CPU、主板、内存和外部存储。
关于CPU超频、BIOS中的内存设置、启用硬盘的DMA66支持等话题已经有一些介绍,这里不再赘述。
使用操作系统包括磁盘启动、操作系统启动、加载基础操作系统、定义临时目录、定义虚拟存储磁盘、加载系统服务、加载自定义服务、定义GUI等步骤。
无论Windows、Linux或Freebsd等操作系统如何,这都适用。
也就是说,如果我们能够优化上述每一个步骤,就可以提高系统的性能。
接下来,我们一起来优化每一步。
主要内容:磁盘启动、操作系统启动、基本操作系统定义、临时目录定义、虚拟内存加载、系统服务加载、自定义服务定义、GUI1.磁盘引导从第一个扇区读取信息,从磁盘的0磁道开始,加载操作系统的系统引导程序在这一步中,由于系统只能读取一个扇区的数据只有512KB,所以操作系统引导程序不是直接插入可以读入的,而是只能读入一个很小的程序,然后这个程序可以通过读入来启动操作系统。
这一步我们说的是IO.SYS和MSDOS.SYS(这些安装后Win98可用)。
由于该程序通常是每个基本操作系统默认的,因此通常无法对其进行自定义。
不过值得注意的是,如果你使用的是Windows98系统,打开MSDOS.SYS文件看一下:WinDir=C:\Windows;可以得到一定的速度提升。
Windows所在位置WinBootDir=C:\Windows;启动目录HostWinBootDrv=C;启动盘(推荐这三个单独的变化)BootMulti=1;是否按F8进入菜单,F4/F2快捷菜单是否有效。
值得注意的是,美屏等管理软件可以屏蔽启动时按F8/F4/F2无效的情况,建议在显卡启动时DoubleBuffer=1时将BootGUI设置为1。
这对于非法关机后修复硬盘很有用,但如果你对你的Win98非常熟悉你也可以将其设置为0WinVer=4.10.2222;以Windows模式启动DrvSpace=1;Dbl空间=1;该选项功能未知)LOGO=1;是否显示主屏优化需要1秒左右。
BootDelay=0为最快时间。
禁用日志=0;速度,可以设置为12。
Windows2000/XP的操作系统启动,Linux和Freebsd的LILO和Grub都是优秀的操作系统启动程序。
如果要优化,请将您最常使用的操作系统设置为默认项目,并将默认启动时间更改为1秒。
例如,如果你使用Windows2K/XP,你可以使用记事本等文本编辑工具打开系统盘目录下的boot.ini文件(注意这个文件本身是系统+隐藏属性)。
其中一行是Timeout=xx,其中xx这里xx是系统运行时系统的等待时间。
为了缩短时间,我们可以将其写为Timeout=1。
请务必写入Timeout=0,这意味着无限期地等待,直到手动选择用户。
同样,GRUB中也有一个Menu.LST文件。
原则上来自Bachal。
)3.在基础操作系统部分,操作系统加载自己的程序和连接文件。
内核的。
由于Windows的核心是保密的,因此在Unix中没有办法在未经许可的情况下对其进行更改。
这就是为什么人们非常看好Linux在嵌入式行业的发展——因为内核可以定制,只能保留必要的功能,而且整个内核可以做得很小。
好啦,回来了,因为内核程序速度很快,而且本身花费的时间也很小,而且Linux的内核定制可以参考天际网的相关文章。
朋友们切记:“由于操作系统所在的分区要进行读写操作,所以最好单独为操作系统划分一个分区,放置临时目录、临时存放盘、文件、游戏、备份等。
.其他分区到其他分区去其他分区》五、Windows上默认放在操作系统下的TEMP目录下,UNIX下默认放在/tmp下。
如果我们找到提高其读写速度的方法,就可以达到这一步的优化效果。
由于硬盘的物理和形态因素,硬盘的读取速度比室内室外硬盘快。
硬盘驱动器。
在Windows、Unix等大多数操作系统中,前面的分区划分得越多,就越靠近内区,也越靠近外表面。
在UNIX上,分割/boot后可以立即分割为/TMP分区。
D盘、针对D盘、针对D盘、针对D盘、针对D盘、针对DMWin9x和2000方法:Win9x:1.新建一个目录temp;用记事本\AutoExec.bat(如果没有,可以自己创建一个),输入以下两行。
2、打开“控制面板”-“属性”-“高级”;不过,由于Windows还是有某些程序,有些程序的默认目录并不是我们设置的TEMP目录,所以需要指定。
以IE为例:“工具”-“Internet选项”-“Internet临时文件”这里“设置”-“移动文件夹”,临时目录为我们的D:\Temp。
在Windows或Unix下,临时文件的很大一部分不会被删除,因此可以每周定期删除D:\Temp。
在Unix上,此类常规命令可以通过Cron来完成。
5.在继续之前定义更快的存储。
由于外部存储的价格低于RAM,因此大多数用户在内存不足时一般会选择使用外部硬盘来利用虚拟存储。
需要注意的是,这从技术上来说只是虚拟内存,并不能真正提高这部分硬盘的读写速度。
因此,在资金允许的情况下,建议用户升级到512MB内存更为合适。
天元经常看到很多用户一味追求高速CPU,而忽略了内存需求。
事实上,只有Photoshop、3DMAX、WinAMP等需要实时计算和解码操作(大部分图形渲染都可以通过显卡来完成,以减少CPU的负载)。
其实对CPU消耗影响不大,但需要大量高速内存的支持。
根据我们上一步的知识,自然虚拟磁盘的读写速度应该越高越好?因此,很多书籍在介绍Unux安装时,都建议先放置交换分区。
在Windows中,我们可以指定虚拟目录放置在d盘上。
同样,对于Win9x和Win2k/xp有两种方法可以实现此目的。
Win9x:1、打开“控制面板”-“属性”-“性能”-“虚拟内存”2、指定虚拟内存为自定义,选择d盘。
1、打开“控制面板”——“属性”——“高级”——“性能选项”;如果您自己使用,请选择“应用程序”。
如果提供FTP或Web服务,请选择“后台服务”。
(可以看出,微软为了节省开发成本,创建了相同架构的Win2kPro/Server/Advanceserver这三个版本。
)3、选择“虚拟内存”下的“更改”。
4.更改C盘虚拟内存删除内存并相应设置d盘虚拟内存。
5.然后重新启动计算机。
当计算机检测到内存不足时,就会在d盘下创建一个虚拟磁盘来模拟内存使用情况。
虚拟内存在Win9x上是一个名为Win386.swp的文件,在Win2k上是一个名为pagefile.sys的文件。
不要忘记删除C盘上的同名原始文件,以增加C盘的可用空间。
当然,磁盘的读写速度远远慢于内存,所以这只是权宜之计,增加更多的物理内存才是正确的解决方案。
6.加载系统服务在这一步中加载系统基础服务。
例如“控制面板”-“控制工具”-“服务”中的项目在Win2k上是类似的;这里我们一般不能改变服务的内部来提高效率,而是只选择我们需要的服务,关闭不需要的服务。
这就是个人用户和服务器管理员都必须遵守的法律发挥作用的地方:“如果你可以启用或禁用它,你就不能启用它,如果你可以禁用它,你就不能使用它。
”这不仅可以缩短系统启动时间,还可以增加系统内存的可用性并避免安全漏洞。
我记得我的前辈曾经向我指出:“服务器提供的服务越多,它的漏洞就越多,就越容易受到攻击。
但无论是在w2k还是UNIX中,有些默认打开的服务都是不必要的,甚至是危险的。
”。
以Win2k为例,默认启用“远程控制注册表”、“DHCP服务器”等功能,UNIX下的很多操作系统也默认启用“Sendmail”和“Smaba”。
因此,请根据您的选择选择必要的服务。
此步骤将非常耗时,并且会对某些服务提出问题,但它也具有提高性能的最大潜力。
值得一提的是,一些在后台运行的程序也会加剧这种情况,例如防病毒软件和令人讨厌的Shockwave病毒。
至于详细的介绍,天际网的一些介绍操作系统的文章有详细的说明。
如果我一一写在这里,就会有骗取版税的嫌疑。
7.之所以加载自定义服务要与上述步骤分开,是因为它们存储的启动文件的位置不同。
其次,需要启动一些系统服务。
如果它们没有启动,操作系统将被连接。
不能像平常一样走路。
例如Win2k服务中的“LogicalDiskManager(逻辑磁盘管理器看门狗服务)”就是专门用于管理硬盘的。
自定义服务项目存在于Windows中的注册表运行序列号中(Software\Microsoft\Windows\CurrentVersion\Run、Software\Microsoft\Windows\CurrentVersion\Runonce、SOFTWARE\Microsoft\Windows\CurrentVersion\Run、SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce,软件\微软\Windows\CurrentVersion\RunOnceEx,软件\微软\Windows\CurrentVersion\RunServices);在UNIX上,它存储在特定位置的文本文件中,例如例如redhat下的/etc/rc。
本地文件,一行一个shell命令,非常简单明了。
一般来说,即使将这部分的服务全部删除,也不会影响系统启动。
不过,操作系统的一些“原生”服务可以让我们更方便地使用。
同时,许多Windows木马也隐藏在这里。
在自定义服务中,你可以去掉一些你不需要或者很少使用的服务(比如天元去掉了音量调节服务,因为我一直喜欢直接用音箱玩)。
一些系统启动时需要运行的程序不需要或很少使用(例如天元的fvwm启动在Linux中被添加到/etc/rc.local中)。
合理使用,选择合适的程序,去掉无用的程序,也可以达到相当不错的性能优化目标达到。
顺便向我的Windows朋友推荐一款我非常喜欢的注册表编辑工具。
它的名字叫RegHance,非常简单实用。
8.在此定义GUI。
为什么要特别提到GUI?Windows用户可能会感到困惑,因为Windows的图形用户界面嵌入在内核中,但独立于UNIX。
由于操作系统的独立性,这部分无法详细解释。
我只是给出一个想法:“尽可能减少不必要的资源消耗。
”示例:控制加载到GUI中的字体数量。
实际情况确实如此。
由于中文的特殊性(字符多、非字母组合),汉字库比英文字库大得多,当然占用的内存也大得多。
(现在你明白为什么英文一般用在寻呼机、手机、嵌入式系统等ROM/RAM有限的场合了吧?由于它总共只有26个字母,所以在这方面它实际上比中文优越。
原因是从我们使用的键盘上也可以看出,天元认识一些从事美术行业的朋友,他们经常习惯把自己使用的字体全部放在字体目录中,其实每次都会加载到内存中。
已开始(顺便说一句)我们以前尝试过,Win98将fonts目录中的字体复制到400m左右就无法再增加了,一个值得的方法是添加一些不常见的字体来复制其他目录。
,然后根据需要将它们转移到字体目录,然后重新启动计算机。
虽然确实有点不方便,但是在你有钱买1GB内存之前,还得节省几百MB的内存。
同样,所有UNIX管理员都知道xWindows仅应在必要时在服务器上运行。
希望上面的小例子能够帮助大家开动脑筋,思考其他值得优化的地方。
文章写到这里,已经接近尾声了。
我突然想起当我告诉原野编辑我想写一篇关于操作系统优化的文章时他对我说的话:“已经有很多介绍系统优化的文章了,有无数的文章,介绍Windows和UNIX平台下的系统优化。
”。
超级兔子、优化大师、webmin等优秀的系统调优/优化工具不断更新。
但正如“只有自己买的鞋才是最合适的”这个道理,天元试图将自己优化系统的经验分享给大家。
IT行业每天都在发生变化,新的操作系统也逐渐出现。
如果你掌握了优化软件,面对新的操作系统可能仍然束手无策。
学习学习不是学习其形式。
“如果你了解了操作系统优化的原理,并按照以上八个环节来思考和分析自己的机器情况,即使你面临着这样的情况,你也可以快速优化它。
”全新的操作系统,提高您在学习和娱乐领域的工作和效率。
按照中国人的习惯,消费意味着春节期间鱼“年年丰”。
授人以鱼不如授人以渔。
我希望这篇文章可以帮助您充分发挥对手机的热爱的潜力。

学习Linux的心得

LINUX与DOS类似。
理解好LINUX的结构然后记住命令就够了吗?==============================不要误导我,我记得我之前也回答过类似的问题===============================================================分享一下我这几年学习Linux的经历。
我不敢说我​​有什么成功的经验,但我有很多失败的教训。
第一点:我是大二的时候学Linux的。
当时安装的发行版是RedHat。
但一开始声卡驱动无法安装,显卡、网卡等其他东西都安装了。
但由于没有声音,我就没有坚持使用。
几年后,当我再次尝试获取声卡时,我仍然找不到,但这一次我更加坚定了,所以我查了很多资料,并向很多人请教。
我终于完成了。
---------总结:无论你是学习Linux还是其他什么,决心都应该放在非常重要的位置。
第二点:这两年,我对Linux和GNU的很多开源的东西产生了浓厚的兴趣,于是我开始深入研究Linux;我在使用Linux后不久也开始阅读内核代码。
但到目前为止,我还没有真正理解内核的结构、很多模块的功能和实现原理。
----------总结:不要在错误的时间做错误的事。
具体来说,有几层含义:a》不要只看内核代码;b》不要高估自己的能力;c》只有这样你才能了解更深层次的东西。
当你积累了一定的知识时,就应该学习;d》我们应该做的;带着相关问题去研究技术,而不是做无意义的技术研究,是一种学术风格;第三点:Linux上的开源软件以及Linux所固有的开放精神、文化和意义比Linux内核更有价值;--------总结:选择Linux,其实就是选择一种文化,选择一种信仰;由于此选项已达到如此高的水平,任何(与其他系统)的比较都是不公平的;价格。
第四点:回到问题,怎么学呢?我个人认为应该遵循以下顺序:接触(设置发行版)=>了解(至少了解它能做什么)=>熟悉(用它来完成一些日常任务)=>理解(在长期使用过程中)术语使用))理解为什么Linux会这样解决问题)=>创建(在前面的步骤的基础上进行一些改进和创新)。
当然,这样的过程需要做很多“功课”,操作系统的知识固然很重要,但不是必须的,等有基础了再搞清楚;大象保护模式也是如此。
我个人对学习级别有这样的分类:1.重要、紧急:熟悉目录结构、基本操作命令(注意是基础)、文本编辑器的使用(使用vi或emacs),但不建议学习全部,因为一开始我想全部精通,但是这样就会有不必要的麻烦。
成为原因;现在注意vi)的使用;2.重要,不紧急:正则表达式,grep,sed,awk,perl,gcc,gdb(其实这些东西需要一个很长的过程来学习,但是它们在整个系统中都有用处;它们重要存在的原因是有很多)它很好地体现了Linux的精神;之所以不紧急,是因为它是一个伟大而复杂的软件,需要慢慢消化吸收,而不是整个吞掉)。
3.不重要,不紧急:一个华丽的桌面,一些漂亮的桌面插件(Linux的强大并不在于它的桌面环境,虽然Gnome和KDE都很优雅;相比之下,这为什么不重要其他原因是)重要的事情)也就是说,这是必要的,因为这些事情会在短时间内抓住你的心和你的兴趣,而兴趣是支撑你后续学习过程的最重要的东西---请相信它。
4.不重要,不紧急:把Windows上常用的东西搬到Linux上,比如用Wine玩WoW或者CS(道理很明显,上航母去钓鱼肯定和开船一样。
不是情绪化的))。
我个人的建议是:了解操作系统的结构及其工作原理。
了解它的应用来自于日常使用它。
我不认为任何书都能达到你期望的效果,但如果你坚持使用Linux并学习新东西,不断总结和接受,用不了多久你就会发现Linux是你的首选助手。