当前位置: 首页 > 面试题库 >

如何开始在* nix上进行开发

陈翰林
2023-03-14
问题内容

对于使用g ++和gdb的入门,是否有很好的“使用方法”或“入门”指南?

一些背景。体面的程序员,但到目前为止,我已经在Windows中的Visual Studio中完成了所有工作。

我对使用终端来编译文件有一点经验(除了.h和1或2 .cpp以外)。但是除此之外。

任何人都知道如何开始在Linux上编码的好入门?


问题答案:

阅读一些好书,特别是Advanced Linux
Programming
和Advanced Unix
Programming
。另请阅读高级bash脚本指南和Linux
Documentation Project中的
其他文档

显然,在笔记本电脑上安装一些Linux发行版(不是在某些VM中,而是在实际磁盘分区上)。如果您有类似debian的发行版,请aptitude build- dep gcc-4.6 gedit在其上运行以获取许多有趣的开发人员软件包。

学习一些命令行技能。学习使用man命令;安装manpages和安装manpages-dev软件包后,键入man man(使用空格键“滚动文本”,然后q退出该键)。另请阅读intro(2)手册页。当您忘记了如何使用cptry等命令时cp --help

即使对于一个人的小型项目,也要使用git之类的版本控制系统。

备份文件。

阅读有关Linux,内核,系统调用,免费软件,X11,Posix,Unix的几个相关的Wikipedia页面

尝试使用命令行。例如,尝试在命令行上进行一周或更长时间的所有操作。避免使用台式机,也不要使用鼠标。学会使用emacs

阅读有关GNU
make之类的构建器程序的信息

从其源代码(例如,从sourceforge或freecode或github)中检索几个免费软件,并练习构建和编译它们。研究他们的源代码

在命令行中(在终端中)启动的基本技巧(如果未找到命令,则需要安装提供该命令的软件包)。

  • 奔跑emacs; 有一个教程菜单;练习半个小时。

  • 编辑helloworld.c程序(通过main调用某些hello功能)

  • 用它编译gcc -g -Wall helloworld.c -o helloworld; 改进您的代码,直到没有警告。总是传递-Wallgccg++得到几乎所有警告。

  • 用它运行 ./helloworld

  • 使用调试它gdb ./helloworld,然后

    1. 使用help命令
    2. 使用b main命令在其中添加断点main,同样为hello函数添加断点。
    3. gdb使用下运行它r
    4. 用于bt获取回溯
    5. 用于p打印一些变量
    6. 用于c继续执行已调试的程序。
    7. 写一个小东西Makefile,能够使用来构建您的helloworld程序make
  • 了解如何从Emacs内部调用make(with M-x compile)和gdb(with M-x gdb

了解有关valgrind的更多信息(检测大多数内存泄漏)。也许考虑在某些应用程序中使用Boehm的GC。



 类似资料:
  • 问题内容: 我是Linux的新手,使用Windows OS已有10年了,并且使用Microsoft语言进行开发。 我想在Linux领域有很好的经验,并以此为基础进行开发。 首先,我想学习如何使用这个新的OS,然后如何开始对其进行开发,我对Web应用程序特别是Java / PHP感兴趣,因为我在这两个方面都有一定的经验,这将是一个好的开始。 第二,我想学习如何在此基础上发展。 有视频教程可以给我一个

  • 目录 1.1 在 FreeBSD 上进行开发 1.2 BSD 理念 1.3 指导性架构设计原则 1.4 /usr/src的层次结构 1.1 在 FreeBSD 上进行开发 欢迎您的到来。 现在您已经安装好操作系统, 并准备开始编程了。 但是, 从哪里开始呢? FreeBSD 提供了一些什么工具? 它能够为我, 一个程序员提供什么呢? 这些都是本章准备回答的问题。 当然, 与所有其他职业类似, 人们

  • 使用代码模板 如果使用离线工具如Sublime Text来开发的话,您需要按照如下步骤准备好开发环境: 一个包含 直接引用JS 我们还可以直接引用CDN上已经构建好的JS脚本,如下在HTML中添加一个 <script> 标签: <!-- Production Version, Minified --><script src="https://aframe.io/releases/1.1.0/afr

  • 问题内容: 我正在将我的Caffe网络移植到TensorFlow上,但似乎没有进行初始化的工作。我正在使用,但这似乎使训练变得更加困难。 问题答案: 在 Tensorflow 2.0 和 更高版本中 ,和均已弃用。为了进行Xavier初始化,您现在必须切换到: Glorot制服和Xavier制服是同一初始化类型的两个不同名称。如果您想了解有关如何在带有或不带有Keras的TF2.0中使用初始化的更

  • 问题内容: 如何使用C语言在ubuntu linux机器上查找进程开始时间。在linux中,/ proc / [pid] / stat文件提供信息 和文件/ proc / stat给出 为了将这两个值相加,我如何将以前的值转换成秒,因为它是以jiffies为单位。 问题答案: 当人们编译Linux内核时,每秒Jiffies是可配置的。 以下程序使用您正在运行的内核上每秒的跳动次数。它带有一个可选的

  • 我试图使用开源的apache kafka运行Kafka连接器(不是使用confluent) 这很好,但这种方式只启动Kafka连接工作程序,我如何加载社区连接器? 我尝试了上面的两个命令,都没有给出错误,但无法加载连接器模块。另一个问题,我键入什么命令来检查连接器的状态?