跨平台的linux?linux常用软件官网
大家好,感谢邀请,今天来为大家分享一下跨平台的linux的问题,以及和linux常用软件官网的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
如何在Windows和Linux上进行跨平台P/Invoke
NET的程序是和Java一样的托管代码,在底层操作上,具有很大的局限性,像Java的JNI一样,.NET具有Platform Invoke(平台调用,通常叫P/Invoke)。本文中,Linux下的.NET托管代码运行在Mono CLR上。之所以做跨平台的P/Invoke,是因为考虑到有些客户在Win32/WinCE等系统中开发的.NET程序,需要换到Linux平台运行。嵌入式开发中,经常需要操作IO,.NET程序就通过P/Invoke来调用一些用比如c/c++一类语言开发的native代码完成IO操作。这时候针对windows编写的native代码,就不能不加修改的移植到Linux上,要完成这个移植工作就需要编写Linux下的native代码。但如何做到不修改.NET程序呢,下面就让笔者以实例讲述。
要保证.NET程序不加修改,不许重新编译,需要做到native代码具有一致的接口。比如我们有native.dll何libnative.so两个不同系统下的动态链接库,在.NET程序中,调用动态库中的getSum(int a,int b)函数,则需要在native.dll和libnative.so中都存在getSum(int a, int b)函数,而且导出的名字要一致,都是getSum。编译时要注意编译器对符号名称的修饰,vc编译器中,可以用Module-Defination File(.def)文件来规范到处的函数名称。
在.NET的代码中,透过DllImport引入外部函数时,指定的链接库模块不要加扩展名。比如native.dll,只要写native就好。windows中,会自动寻找native.dll,Linux下对应的是libnative.so。
以下是实例代码:
using System;
using System.Runtime.InteropServices;
namespace Managed
{
class Program
{
[DllImport("native")]
public static extern int getSum(int a, intb);
static void Main(string[] args)
{
System.Console.WriteLine("Managed code out.");
System.Console.WriteLine("1+2="+ getSum(1, 2));
}
}
}
上边的代码演示了从外部动态链接库引入函数的方式,注意没有加扩展名。接下来在看看windows下的c代码是如何编写的:
/**
* native.h头文件,声明函数原型
*/
#ifndef NATIVE_H
#define NATIVE_H
#ifdef __cplusplus
extern"C"{
#endif
int __stdcall getSum(const int a, const intb);//原型
#ifdef __cplusplus
}
#endif
#endif
/*
* native.cpp
* 2013-03-05实现功能的代码
*/
#include"native.h"
#include<stdio.h>
int __stdcall getSum(const int a, const intb)
{
printf("WindowsNative code.\n");
returna+b;
}
以上是具体的代码,另外需要模块定义文件(.def)来指定导出的函数表。如下:
LIBRARY"native"
EXPORTS
getSum
在VC中,编译,以上代码,可以生成dll文件。用dumpbin工具可以看到导出的函数名为getSum。
Linux下的共享库(Shared Object,简称so)的实现比上边更简单,编译时gcc加上-shared参数即可,这方面网上很多。我直接采用了code block的IDE,建立shared library工程。编译时IDE就会把这些处理好。编写的代码如下:
#include<stdio.h>
int getSum(int a, int b)
{
printf("Linux Natie code\n");
return a+b;
}
编译生成libnative.so。
我们在native的代码中插入了输出语句,用来显示调用了哪个库。将这些native.dll, libnative.so,还有C#程序managed.exe拷贝到一个文件夹,在Windows上运行managed.exe结果如下:
可以看出,在Windows和Linux下的P/Invoke调用都很成功。差不多到这里就该结束了,但是还有一点需要提醒,不论哪个平台,如果提示找不到库的问题,请将库放在一个程序能够找到的地方。
以上只是简单的演示了P/Invoke,实际上更复杂的情况,我们可以在.NET程序中,判断当前运行的操作系统,然后采用LoadLibrary或者dlopen等,动态加载共享库,这样更灵活,不再有上边提到的“不加扩展名”,路径找不到的要求或者问题。感兴趣的读者可以自行了解这方面的内容。
计算机平台种类比如我知道的有windows何linux,还有
计算机平台种类?比如我知道的有windows何linux,还有?
软体平台指作业系统,桌面的有Windows、Linux、Mac OS,伺服器的就多了,BSD系列、AIX、Solaris、HP等Unix系统。
然后硬体平台指处理器的架构,有x86、arm、powerpc、mips、sparc等。
一般意义上的跨平台指跨软体平台。
Linux对硬体平台的支援比Windows好的多。
计算机病毒的种类我知道有蠕虫木马.还有什么?
电脑病毒的种类
电脑病毒一般分类如下:
开机磁区病毒
档案型病毒
巨集病毒
其他新种类的病毒
资料由香港特别行政区***资讯科技署提供
开机磁区病毒
在九十年代中期以前,开机磁区病毒是最常见的病毒种类。这种病毒藏于已受感染的硬磁碟机的主开机磁区,或磁碟作业系统开机磁区内。当软磁碟插入已受感染的个人电脑时,病毒便会把软磁碟开机磁区感染,借此把病毒扩散。
使用受感染的软磁碟进行启动程式时,电脑便会受到感染。在启动电脑的过程中,基本输入输出系统会执行驻于软磁碟开机磁区的病毒编码,因此系统便改为受病毒控制。病毒控制了电脑系统后,便会把病毒编码写入硬磁碟的主开机磁区。之后,便会恢复正常的启动程式。从使用者的角度来看,一切情况似乎与正常无异。
日后启动电脑时,驻于受感染的主开机磁区的病毒便会启动执行。因此,病毒会进入记忆体,并可随时感染其他经使用的软磁碟。
[主开机磁区是硬磁碟的第一个磁区,这个磁区载有执行作业系统的分割控制表及编码。主开机磁区后的16个或以上的磁区通常是空置不用的。
硬磁碟机最多可分割为4个储存分割槽,而磁碟作业系统的扩充套件分割槽可细分为多个逻辑驱动器。
每个分割槽的第一个磁区便是开机磁区,这个磁区包含载入分割槽的作业系统的资料及编码。
软磁碟没有主开机磁区。以标准磁碟作业系统格式进行格式化后的软磁碟,在结构上与硬磁碟的磁碟作业系统分割槽相同。]
档案型病毒
档案型病毒是一种依附在档案内,经由程式档而非资料档扩散的病毒。电脑在执行受感染的程式时,便会受到感染。这些受感染的程式可能经由软磁碟、唯读光碟、网路及网际网路等途径传播。在执行受感染的程式后,随附的病毒便会立即感染其他程式,或可能成为一个常驻程式,以便在日后感染其他程式。在完成这些步骤后,病毒便会恢复执行原本的正常程式。因此,使用者在执行受感染的程式时,不易发觉有任何异常的情况。
档案型病毒一般会感染有特定副档名的档案。副档名为COM、EXE及SYS的档案,均是常见的病毒感染物件。
巨集病毒
一九九五年七月,一种新的电脑病毒被人发现,立即使电脑界大感震惊。这种新的病毒称为巨集病毒,它与一直以来出现的病毒不同,可感染资料档而非执行档。其实,这并非一种新的概念,因为有关以巨集语言编写病毒的可行性的研究,始于八十年代后期。在Word程式出现的巨集病毒可以在多个不同的操作平台活动,而且,只要电脑的Word程式是支援Word档案格式的话,便有机会受到感染。换言之,无论使用的是OS/2或Windows版本的Word程式,或是个人电脑或麦金塔(Macintosh)电脑,也可能受到巨集病毒的感染。
其他新种类的病毒
病毒和抗御病毒技术不断转变,日新月异。随着电脑使用者使用新的操作平台/电脑技术,编写病毒的人也会随之而发展新病毒,再作扩散。下文列出部分可能出现新病毒种类的新操作平台/电脑技术:
Java
ActiveX
Visual Basic(VB) Script
HTML
Lotus Notes
Java
Java病毒一直是一个富争议的话题:究竟可否编写Java病毒?Java病毒可否在电脑之间或经由网际网路扩散?以上问题,均曾在不同的新闻组进行讨论。由于Java微应用程式的设计是在受控的环境(称为「sandbox」)内执行,接触不到电脑的档案或网路的接驳,因此,Java病毒在电脑之间扩散的可能性极低。
但由于 Java亦像其他标准的程式一样,可让开发人员建立可控制整个系统的应用程式,故Java病毒有其产生及存在的空间。
第一种被发现以Java电脑程式开发语言为本的病毒称为「 Java.StrangeBrew」。首次发现日期是一九九八年九月,会感染属Java类别的档案。但这种病毒只会影响独立的Java应用程式档案,以微应用程式执行的档案则不受感染。虽然Java应用程式并不常见,「 Java.StrangeBrew」病毒的扩散也只属于初步阶段,但这种病毒的影响实在不容忽视。随着Java应用程式日趋普及,预料Java病毒的种类也会逐渐增加。
ActiveX
跟Java的情况一样,ActiveX被视为将会受病毒入侵的操作平台。若就设计方面将两者比较,在 ActiveX扩散病毒的机会较Java为大。基本上,ActiveX是 Object Linking and Embedding(OLE)的精简版本,会直接接触电脑的 Windows系统,因此可连线到任何的系统功能。此外,ActiveX的使用者并非只局限于MS Inter Explorer的使用者;现在,Netscape Navigator的附加程式(plug-in)也可使用这种技术。相比之下,Java是在「受控的环境」下执行,或经由一个名为「Java Virtual Machine」的程式才可执行,因此可使Java与作业系统的各项服务隔开。
Visual Basic(VB) Script
过去,编写病毒的人若要成功编写一种可感染其他电脑的病毒,必须对电脑的基本操作具备相当程度的知识。但随着 Microsoft Office内巨集的出现,编写病毒的工具已准备就绪,而编写的人毋须具备很多资讯科技知识也能胜任。同样,VB Script病毒所发挥作用的操作环境很快便会普及,扩散也甚为容易。
VB Script病毒已对电脑使用者构成真正威胁。微软公司的原意是包括一种功能强大而易于使用的语言以便轻易取用 Windows 98/NT系统内的资源。VB Script是以人类可阅读的方式编写,所以易于明白。正是这个原因,很多并没有具备高深资讯科技知识的编写病毒的人也可侵入这个领域。
以 VB Script编写的程式的第一代病毒藏在以 HTML编写的网页内,经由网际网路扩散开去。现时散播力强的 VB Script编写的病毒通常以寄发电子邮件的方式扩散,按使用者地址册所列的电邮地址把病毒程式一同寄出。使用者执行附件中的程式时,便会帮助病毒扩散。
超文字标示语言(英文简称「HTML」)
借由 HTML扩散的病毒是另一个在网际网路上引起广泛讨论的话题。有人甚至声称/宣告已发明/发现首只属 HTML种类的病毒。
HTML是一种控制网页设计的编写语言。本来,纯 HTML是不会受到感染,因此,只支援 HTML的浏览器也不会有受病毒感染的危险。所谓「HTML病毒」出现的机会实在微乎其微。因此,真正的威胁并非来自浏览网际网路的网页,而是来自从网际网路下载已感染病毒编码的程式并加以执行。
但现时的浏览器大部分都支援其他编写网页的语言,而所谓的「HTML病毒」通常会利用这些编写文字的语言进行扩散。在文字内的病毒通常会藉著网页感染电脑,VBS.Offline便是一个典型的例子。目前,最普遍的文字病毒便是刚讨论过的 VB Script病毒。
Lotus Notes
Lotus Notes使用者众多,会是编写病毒的人针对的软体。虽然目前尚未发现本机的 Lotus Notes病毒,但在 Lotus Notes资料库内的 rich-text栏位却提供了可供传统病毒(例如:档案型病毒及巨集病毒)驻存的地方。因为有关记录曾进行压缩,所以一般抗御病毒软体不能侦测在 Notes资料库内的病毒。为防范电脑病毒入侵 Notes的操作环境,我们建议使用者安装专为 Notes软体而编制的抗御病毒软体。
建设计算机A级机房需要些什么呢?比如我知道的有地板空调这些东西
这个可参考《电子资讯系统机房设计规范》。首先要求就是防火,抗震等,其次是对温溼度,洁净度的要求等。至于你说的这些地板,空调这都属于机房里面的装置。
顾名思义,机房肯定放的都是伺服器机柜,交换机,UPS等,还有就是外围装置,如:静电地板,空调,监控装置等。这些装置根据机房性质而定!
计算机有四进位制吗?我知道的计算机有2、8、16进位制。请高手指点!谢谢!
有啊,原理也是一样的,逢4进位呗,比如以前有时候用debug找出BIOS密码就会用到这个。
我知道的计算工具有______、______等
我知道的计算工具有计算器,算盘等.
故答案为:计算器,算盘.
我知道另一台电脑的IP和计算机名,如何控制他的计算机
开始--执行--cmd--tel+对方IP地址,shutdown-i
如果对方23埠开着你这么做,如果没开..那你没机会了
一般不能控制,你有没有植入被控端
2012最近回归的韩国组合比如我知道的 BB还有 MISS A等等还有没有
2am,shinee,blue,都是最近回归的。今年应该有exo出道,fx和2pm在8月左右回归。
谁能提供翻唱歌手的名字?比如我知道的有刘芳.
黑鸭子、青燕子、八只眼......
一台linux计算机如何和一台windows计算机实现随意访问
Linux需要安装samba服务,并开启需要的许可权,具体做法可百度一下。
Windows开共享即可。
西亚斯专升本,加分的证书有那些、?目前我知道的有六级证。计算机证还有商务秘书证
测评专案权重分值积分备注
前五学期全部课程的平均成绩 80%
个人能力及奖励 20%
学生任职情况20分院学生会主席、副主席;院团委书记助理、院领导助理团; 0.28
院学生会、院团委各部部长、副部长;各专业学院(系)党支部副书记;各专业学院(系)分团委副书记、书记助理;各专业学院(系)学生会主席、副主席; 0.23
各专业学院(系)分团委、学生会各部部长、副部长;各专业学院(系)党支部委员、党小组组长;各专业学院(系)团总支副部长级以上职务; 0.18
班级团支部书记、班长; 0.13
班级团支部一般干部、班级一般班委; 0.08
院各种社团主要负责人; 0.07
相同职务每连任一次; 0.03
院奖励
20分院级以上表彰奖励(国家、省、郑州大学本部) 0.45
院级优秀学生干部、优秀团干部、优秀团员 0.20
院级三好学生 0.20
院级其他表彰 0.10
不在同一年度内重复获奖者 0.05
奖学金
20分院在校奖学金特等 0.30
院在校奖学金一等 0.25
院在校奖学金二等 0.20
院在校奖学金三等 0.15
不在同一年度内重复获奖者 0.10
技能考试20分通过CET-6、托福600分或新评分标准95分、雅思6.5分 0.30
通过CET-4、TEM-4、密歇根9级、托福550分或新评分标准61分、雅思5.5 0.25
通过全国(省)计算机等级考试二级(三级) 0.25
获其他职业资格证书 0.20
贡献奖
20分重大贡献奖 0.4
奖获院级以上组织的大型活动或竞赛前三名(国家、省、郑州大学本部) 0.30
获学院组织的大型活动或竞赛前三名 0.20
不在同一年度重复获奖者 0.10
注:1、被推荐的学生必须品学兼优者,前五学期中曾受校级处分者不予参加;
2、“学生任职情况栏”必须通过正式选举产生,并有相应部门的任职证明,临时负责者不记入本栏。首次担任按该项进行加分,连任者按照每次连任项进行加分,同一项内连任两职或两职以上者,按下一项的权重进行加分;若换算后超过20分,按20分计;
3、“院级奖励栏”仅指“优秀干部”、“优秀团员”、“三好学生”或“先进个人”等由学院负责评议,并有相关档案及盖有院章的奖励证书;首次获奖按本项分值计分,不同年度重复获得按照不同年度内重复获奖者项进行加分,同一项内获得两项或两项以上奖励,按此项一下的权重分值进行加分;若换算后超过20分,按20分计。西亚斯基金会奖学金,国家励志奖学金为院级其他表彰;
4、“获奖学金栏”首次获得按本项分值进行加分,重复获得按在不同年度内获得进行加分;若换算后超过20分,按20分计;
5、“技能考试栏”要求非英语专业学生通过CET-4、6,英语专业学生通过CET6、TEM-4、8,国际教育学院学生通过语言关才能计分。计算机等级考试要求非计算机专业学生通过二级,计算机专业的学生通过三级。其他职业资格考试凭颁发的证书计入分数,普通话证书、驾照、非本校获得的CET、TEM、计算机等级考试证书不参加评定。同一项内获得多种证书者按照本项进行加分,不再累加;
6、“贡献奖栏”仅指由院级以上单位组织的大型活动或竞赛专案,奖励证书以加盖省、郑州大学、院章为准,其他部门公章无效。其中重大贡献奖仅指为学院争得特别荣誉的专案,如破省级运动会单项记录,代表河南省参加全国CCTV英语演讲比赛等;首次获奖按本项分值计分,不同年度重复获得按照不同年度内重复获奖者项进行加分,同一项内获得两项或两项以上奖励,按此项的下一项的权重分值进行加分。
7、“个人能力及奖励”项得分的计算方法:是将每一单项的得分权重累加之和乘以本项分值(20分)为单项积分。5个单项得分之和再乘以20%为本项的最后得分。
8、学生必须对本人填报的内容负责,如有弄虚作假、谎报者,一经发现,取消其申报资格。
请问运行于不同CPU构架的linux,它们的软件可以通用吗
以上回答中jiangtao9999的比较靠谱儿。
是这样:
1、Linux下的软件几乎都是c语言的;
2、如果你学过C语言,找找书应该有这样一个概念:ANSI C,这个是一个C语言的标准,比如printf这个函数就属于标准库(也就是符合ANSI标准的)函数
3、假如你编写了一个软件,代码中仅仅包含ANSI的库函数,那么没有问题,只要是支持C语言的平台,都能正常运行,即:编写了一个简简单单的helloworld到哪里编译运行都没有问题。
【前提是:】编译再运行,不编译就运行是不可以的,比如printf函数在各种架构上的实现方式是不可能相同的,所以需要在arm的编译器上再编译一遍才可以。否则运行不了。
有的软件平台可以不用编译,直接运行,比如jiangtao9999说的java、Python什么的,Java可以实现“一次编译,满哪运行”什么的,而Python则是有了.py源代码就可以无敌了,使用的时候不用你去执行编译命令,直接执行即可。arm上实现这两种语言都是很容易的——下载源代码、编译、安装即可。
4、不同架构的Linux平台都要实现一个编译器,这是很重要的,有了编译器,才可以从源代码安装软件。
5、使用非ANSI库中的函数需要该Linux包含这个函数的实现,否则,编译后的连接将不通过,比如一个软件使用了GTK来实现图形用户界面,那么就需要系统中包含了gtk的库函数,这就叫依赖,安装软件,首先要解决依赖,依赖有时候解决起来很麻烦,所以软件开发过程中尽量减少依赖,这样方便安装。
6、tar.gz这种格式的软件包有可能是源代码,有可能是可执行文件(这是因为那只是一个压缩包,内容是什么不一定),这两者不同。很多软件以tar.gz格式发布源代码,而qq的Linux版本属于可执行文件,在几乎所有Linux平台下面直接双击或者通过命令就可以使用。
7、如果你使用的是rpm包或者deb包或者是tar.gz文件包中可执行文件形式的软件包,而不是tar.gz这种形式的源代码,你需要使用相应的软件包管理器安装就行,
但这不意味着arm版本的deb和x86版本的deb文件是通用的,你能这样用是因为所有的使用x86机器的软件经过编译或者交叉编译(在arm平台上编译x86平台上的软件就叫交叉编译)以后,运行于几乎完全一样的统一的平台上,实现软件和系统的无缝对接,方便了用户——一方面可以不用浪费编译的时间,主要还是方便了那些不会编译软件的人。
8、我也正在学习Linux,所以很多地方不太对,这只是我现在的一些理解。jiangtao9999说的主要是和汇编有关,如果代码的实现主要是在c语言水平,那么就会由编译器屏蔽掉指令集和寄存器什么的。
9、要是在百度回答的答案能改改就好了,这样错误就会少一点。
10、重新罗嗦一遍:
1在不重新编译源代码的情况下,x86下linux的软件不可以运行于arm构架的Linux,即使运行也会奇卡。
2和在编译是否时为X86的CPU构架优化了编译无关。(把我问迷糊了,估计是无关)
3软件在编译时是否为X86的CPU构架而优化主要看作者了,资料可以参看
4和不同的安装包格式有一定关系
5tar.gz格式的软件包不能保证在不同架构的Linux都能运行
6在arm的linux安装时解决依赖以后,乳沟编译通过基本是没什么问题的
7不是所有源代码在arm和x86下编译一下就可以了,还需要做一些努力
8有源代码可以对遇到的不通过的问题逐一解决,理论上可以实现所有软件都能运行
9重新编译过程中如果遇到依赖问题需要逐一解决