首页 \ 问答 \ VNC的使用方法

VNC的使用方法

VNC的使用方法,分步骤!
更新时间:2023-12-07 20:12

最满意答案

其实是一样的。在哪个学都一样。
如果你要装linux,建议你装centos,这个系统要相对稳定些。

希望我的回答对你有所帮助!

其他回答

这篇文章介绍在linux下进行c语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 
源程序编译 
makefile的编写 
程序库的链接 
程序的调试 
头文件和系统求助 

--------------------------------------------------------------------------------
1.源程序的编译
    在linux下面,如果要编译一个c语言源程序,我们要使用gnu的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器. 
假设我们有下面一个非常简单的源程序(hello.c): 
 int main(int argc,char **argv)
  {
 printf("hello linux\n");
  }

要编译这个程序,我们只要在命令行下执行: 
gcc -o hello hello.c 
gcc 编译器就会为我们生成一个hello的可执行文件.执行./hello就可以看到程序的输出结果了.命令行中
gcc表示我们是用gcc来编译我们的源程序,-o 选项表示我们要求编译器给我们输出的可执行文件名为hello
而hello.c是我们的源程序文件. gcc编译器有许多选项,一般来说我们只要知道其中的几个就够了. -o选项我们已经知道了,表示我们要求输出的可执行文件名.
-c选项表示我们只要求编译器输出目标代码,而不必要输出可执行文件. -g选项表示我们要求编译器在编译的时候提供我们以后对程序进行调试的信息. 知道了这三个选项,我们就可以编译我们自己所写的简单的源程序了,如果你想要知道更多的选项,可以查看gcc的帮助文档,那里有着许多对其它选项的详细说明. 
2.makefile的编写
    假设我们有下面这样的一个程序,源代码如下: 

/*  main.c */
 #include "mytool1.h"
 #include "mytool2.h"

 int main(int argc,char **argv)
 {
  mytool1_print("hello");
  mytool2_print("hello");
 }

/*  mytool1.h  */
#ifndef _mytool_1_h
#define _mytool_1_h

 void mytool1_print(char *print_str);

#endif

/*  mytool1.c  */
 #include "mytool1.h"
 void mytool1_print(char *print_str)
 {
   printf("this is mytool1 print %s\n",print_str);
 }

/* mytool2.h */
#ifndef _mytool_2_h
#define _mytool_2_h

 void mytool2_print(char *print_str);

#endif

/*  mytool2.c  */
 #include "mytool2.h"
 void mytool2_print(char *print_str)
 {
   printf("this is mytool2 print %s\n",print_str);
 }

当然由于这个程序是很短的我们可以这样来编译 
gcc -c main.c 
gcc -c mytool1.c 
gcc -c mytool2.c 
gcc -o main main.o mytool1.o mytool2.o 
这样的话我们也可以产生main程序,而且也不时很麻烦.但是如果我们考虑一下如果有一天我们修改了其中的一个文件(比如说mytool1.c)
那么我们难道还要重新输入上面的命令?也许你会说,这个很容易解决啊,我写一个shell脚本,让她帮我去完成不就可以了.是的对于这个程序来说,是可以
起到作用的.但是当我们把事情想的更复杂一点,如果我们的程序有几百个源程序的时候,难道也要编译器重新一个一个的去编译? 为此,聪明的程序员们想出了一个很好的工具来做这件事情,这就是make.我们只要执行以下make,就可以把上面的问题解决掉.在我们执行
make之前,我们要先编写一个非常重要的文件.--makefile.对于上面的那个程序来说,可能的一个makefile的文件是: #   这是上面那个程序的makefile文件
main:main.o mytool1.o mytool2.o
 gcc -o main main.o mytool1.o mytool2.o
main.o:main.c mytool1.h mytool2.h
 gcc -c main.c
mytool1.o:mytool1.c mytool1.h
 gcc -c mytool1.c
mytool2.o:mytool2.c mytool2.h
 gcc -c mytool2.c

有了这个makefile文件,不过我们什么时候修改了源程序当中的什么文件,我们只要执行make命令,我们的编译器都只会去编译和我们修改的文件有关的文件,其它的文件她连理都不想去理的. 
下面我们学习makefile是如何编写的. 
在makefile中也#开始的行都是注释行.makefile中最重要的是描述文件的依赖关系的说明.一般的格式是: 
target: components
tab rule

第一行表示的是依赖关系.第二行是规则. 
比如说我们上面的那个makefile文件的第二行 
main:main.o mytool1.o mytool2.o 
表示我们的目标(target)main的依赖对象(components)是main.o mytool1.o mytool2.o
当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令.就象我们的上面那个makefile第三行所说的一样要执行 gcc -o
main main.o mytool1.o mytool2.o 注意规则一行中的tab表示那里是一个tab键 makefile有三个非常有用的变量.分别是$@,$^,$

  int main(int argc,char **argv)
   {
         double value;
  printf("value:%f\n",value); 
   }

这个程序相当简单,但是当我们用 gcc -o temp temp.c 编译时会出现下面所示的错误. 
/tmp/cc33kydu.o: in function `main':
/tmp/cc33kydu.o(.text+0xe): undefined reference to `log'
collect2: ld returned 1 exit status

出现这个错误是因为编译器找不到log的具体实现.虽然我们包括了正确的头文件,但是我们在编译的时候还是要连接确定的库.在linux下,为了
使用数学函数,我们必须和数学库连接,为此我们要加入 -lm 选项. gcc -o temp temp.c
-lm这样才能够正确的编译.也许有人要问,前面我们用printf函数的时候怎么没有连接库呢?是这样的,对于一些常用的函数的实现,gcc编译器会自
动去连接一些常用库,这样我们就没有必要自己去指定了. 有时候我们在编译程序的时候还要指定库的路径,这个时候我们要用到编译器的
-l选项指定路径.比如说我们有一个库在 /home/hoyt/mylib下,这样我们编译的时候还要加上
-l/home/hoyt/mylib.对于一些标准库来说,我们没有必要指出路径.只要它们在起缺省库的路径下就可以了.系统的缺省库的路径/lib
/usr/lib /usr/local/lib 在这三个路径下面的库,我们可以不指定路径. 还有一个问题,有时候我们使用了某个函数,但是我们不知道库的名字,这个时候怎么办呢?很抱歉,对于这个问题我也不知道答案,我只有一个傻办
法.首先,我到标准库路径下面去找看看有没有和我用的函数相关的库,我就这样找到了线程(thread)函数的库文件(libpthread.a).
当然,如果找不到,只有一个笨方法.比如我要找sin这个函数所在的库. 就只好用 nm -o /lib/*.so|grep
sin>~/sin 命令,然后看~/sin文件,到那里面去找了.
在sin文件当中,我会找到这样的一行libm-2.1.2.so:00009fa0 w sin 这样我就知道了sin在
libm-2.1.2.so库里面,我用 -lm选项就可以了(去掉前面的lib和后面的版本标志,就剩下m了所以是 -lm).
如果你知道怎么找,请赶快告诉我,我回非常感激的.谢谢! 4.程序的调试 
    我们编写的程序不太可能一次性就会成功的,在我们的程序当中,会出现许许多多我们想不到的错误,这个时候我们就要对我们的程序进行调试了. 
最常用的调试软件是gdb.如果你想在图形界面下调试程序,那么你现在可以选择xxgdb.记得要在编译的时候加入
-g选项.关于gdb的使用可以看gdb的帮助文件.由于我没有用过这个软件,所以我也不能够说出如何使用.
不过我不喜欢用gdb.跟踪一个程序是很烦的事情,我一般用在程序当中输出中间变量的值来调试程序的.当然你可以选择自己的办法,没有必要去学别人的.现
在有了许多ide环境,里面已经自己带了调试器了.你可以选择几个试一试找出自己喜欢的一个用. 
5.头文件和系统求助 
    有时候我们只知道一个函数的大概形式,不记得确切的表达式,或者是不记得着函数在那个头文件进行了说明.这个时候我们可以求助系统. 
比如说我们想知道fread这个函数的确切形式,我们只要执行 man fread
系统就会输出着函数的详细解释的.和这个函数所在的头文件说明了. 如果我们要write这个函数的说明,当我们执行man
write时,输出的结果却不是我们所需要的.
因为我们要的是write这个函数的说明,可是出来的却是write这个命令的说明.为了得到write的函数说明我们要用 man 2 write.
2表示我们用的write这个函数是系统调用函数,还有一个我们常用的是3表示函数是c的库函数. 记住不管什么时候,man都是我们的最好助手. 

--------------------------------------------------------------------------------
好了,这一章就讲这么多了,有了这些知识我们就可以进入激动人心的linux下的c程序探险活动. 
不积跬步,无以至千里!
http://www.linuxdiyf.com/viewarticle.php?id=142230

建议搞个时髦fedora 11玩玩,嘿嘿。
redhat 主要是面向服务器的,当然它的桌面功能也挺强大,他的软件源丰富,编程也很强大,不过现在redhat是面向企业的,它旗下的fedora是开源的。ubuntu主要是面向用户的,桌面功能强大。我就知道这两个,其余的不是很熟。

相关问答

更多
  • 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 -------------------------------------------------------------------------------- 1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单 ...
  • Linux技术其实很好学,只要你找到方法就行,建议你读读linux的书,比如《linux就该这么学》,这本书写的就挺好的 其他回答 1、先找一本基础的书,我当初用的是鸟哥的linux私房菜,基础篇和服务欺篇,当然了,我介绍我朋友用的也是他哦。貌似网上有电子版的。 2、先大体上浏览一下书。不要很详细的看,看不下去,会烦的。 3、安装一个linux的系统。在虚拟机上就可以了。 4、把你的基础篇的书,从头到尾的敲上一遍,看看会出什么现象,多做试验哦。 5、要做笔记的,把你敲试验的新得体会总结一下,这样就成你的知识 ...
  • 其实是一样的。在哪个学都一样。 如果你要装linux,建议你装centos,这个系统要相对稳定些。 希望我的回答对你有所帮助!
  • 1、在virtual box或vmware上安装linux学习。 2、Linux一般是用C/C++语言的。一般的桌面版也非常好的支持perl、python、tk/tcl、asm、java、fortran、lisp、prolog等几乎所有编程语言。(Basic除外)。红旗linux自带了gcc、g++,perl,python,tk/tcl,nasm等语言的编译器,默认浏览器是火狐,也可以用konqueror。 3、当然可以。 4、初学者可以选择红旗linux 6.1 版本,这个版本只有一张光盘大小。自带多种中 ...
  • 不需要,我是先学的C,后来学的shell脚本,而且现在还不怎么会…… 如果shell用惯了,自然就会它的脚本了
  • 明显有用啊,windows是一个要钱的平台,linux是一个不要钱的操作系统,现在的趋势就是从要钱到不要钱, 而且linux也是一个十分强大的操作系统啊,学它是没错的

相关文章

更多

最新问答

更多
  • 如何使用自由职业者帐户登录我的php网站?(How can I login into my php website using freelancer account? [closed])
  • 如何打破按钮上的生命周期循环(How to break do-while loop on button)
  • C#使用EF访问MVC上的部分类的自定义属性(C# access custom attributes of a partial class on MVC with EF)
  • 如何获得facebook app的publish_stream权限?(How to get publish_stream permissions for facebook app?)
  • 如何并排放置两个元件?(How to position two elements side by side?)
  • 在MySQL和/或多列中使用多个表用于Rails应用程序(Using multiple tables in MySQL and/or multiple columns for a Rails application)
  • 如何隐藏谷歌地图上的登录按钮?(How to hide the Sign in button from Google maps?)
  • Mysql左连接旋转90°表(Mysql Left join rotate 90° table)
  • 带有ImageMagick和许多图像的GIF动画(GIF animation with ImageMagick and many images)
  • 电脑高中毕业学习去哪里培训
  • 电脑系统专业就业状况如何啊?
  • IEnumerable linq表达式(IEnumerable linq expressions)
  • 如何在Spring测试中连接依赖关系(How to wire dependencies in Spring tests)
  • Solr可以在没有Lucene的情况下运行吗?(Can Solr run without Lucene?)
  • 如何保证Task在当前线程上同步运行?(How to guarantee that a Task runs synchronously on the current thread?)
  • 在保持每列的类的同时向数据框添加行(Adding row to data frame while maintaining the class of each column)
  • 的?(The ? marks in emacs/haskell and ghc mode)
  • 一个线程可以调用SuspendThread传递自己的线程ID吗?(Can a thread call SuspendThread passing its own thread ID?)
  • 延迟socket.io响应,并“警告 - websocket连接无效”(Delayed socket.io response, and “warn - websocket connection invalid”)
  • 悬停时的图像转换(Image transition on hover)
  • IIS 7.5仅显示homecontroller(IIS 7.5 only shows homecontroller)
  • 没有JavaScript的复选框“关闭”值(Checkbox 'off' value without JavaScript)
  • java分布式框架有哪些
  • Python:填写表单并点击按钮确认[关闭](Python: fill out a form and confirm with a button click [closed])
  • PHP将文件链接到根文件目录(PHP Linking Files to Root File Directory)
  • 我如何删除ListView中的项目?(How I can remove a item in my ListView?)
  • 您是否必须为TFS(云)中的每个BUG创建一个TASK以跟踪时间?(Do you have to create a TASK for every BUG in TFS (Cloud) to track time?)
  • typoscript TMENU ATagParams小写(typoscript TMENU ATagParams lowercase)
  • 武陟会计培训类的学校哪个好点?
  • 从链接中删除文本修饰(Remove text decoration from links)