gnu

GNU操作系统的介绍

此生再无相见时 提交于 2020-03-15 01:50:39
GNU操作系统的介绍 GNU是一个自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU's Not Unix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。GNU的创始人,理查德·马修·斯托曼,将GNU视为“达成社会目的技术方法”。 作为操作系统,GNU的发展仍未完成,其中最大的问题是具有完备功能的内核尚未被开发成功。GNU的内核,称为Hurd,是自由软件基金会发展的重点,但是其发展尚未成熟。在实际使用上,多半使用Linux内核、FreeBSD等替代方案,作为系统核心,其中主要的操作系统是Linux的发行版。Linux操作系统包涵了Linux内核与其他自由软件项目中的GNU组件和软件,可以被称为GNU/Linux(见GNU/Linux命名争议) 历史 GNU操作系统起源于GNU计划,由理查·斯托曼在麻省理工学院人工智能实验室发起,希望发展出一套完整的开放源代码操作系统来取代Unix,计划中的操作系统,名为GNU。1983年9月27日,理查·斯托曼在 net.unix-wizards 和 net.usoft新闻组中公布这项计划理查德·斯托曼通过使用变化单词的各种手法来选择名称,包括曲目斯托曼的目标是成立一个完全自由的操作系统,他希望电脑用户是能够“自由使用”的。因为在20世纪60年代和70年代 -

GNU LD 脚本学习笔记

为君一笑 提交于 2020-03-14 08:08:36
LD脚本(linker script)是什么 GNU ld是链接器,ld实际并不是GCC的一部分,ld属于binutils软件包。但是嵌入式开发时,下载的linaro GCC工具集中是包含 arm-linux-gnueabihf-ld 的。工作中我经常使用ARM的scatter文件,和这个LD脚本差不多,只不过scatter文件的功能要弱不少,这也是为什么ARM6中armclang也是推荐使用 GNU LD脚本的原因,ARM也不想维护自己特有的编译器了,只要专心把clang bytecode翻译成ARM指令的优化做好。 所有的链接过程都是由LD脚本控制的,写这个脚本的语言称为 linker command language,LD脚本的最主要的功能是描述如何将输入文件映射到输出文件以及输出文件的存储布局(memory layout)。在操作系统上开发时一般不会涉及到LD脚本,这是因为如果未使用命令行-T来指定脚本,ld会使用内置的默认脚本,这个脚本可以通过 ld --verbose 来查看,例如 arm-linux-gnueabihf-ld --verbose的输出如下 /* Script for -z combreloc: combine and sort reloc sections */ /* Copyright (C) 2014-2017 Free Software

编译ROS下的ORB-SLAM2时所遇问题的解决记录

为君一笑 提交于 2020-03-08 01:13:31
在编译ROS下的ORB-SLAM2时,需要重新编译源文件 ./build_ros.sh 但在运行时出现下列问题: /usr/bin/ld: CMakeFiles/Stereo.dir/src/ros_stereo.cc.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv' /usr/lib/x86_64-linux-gnu/libboost_system.so: 无法添加符号: DSO missing from command line collect2: error: ld returned 1 exit status CMakeFiles/Stereo.dir/build.make:182: recipe for target '../Stereo' failed make[2]: *** [../Stereo] Error 1 CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/Stereo.dir/all' failed make[1]: *** [CMakeFiles/Stereo.dir/all] Error 2 通过查阅资料,发现出错原因是libboost_system.so 与libboost_filesystem

如何让Dev C++可以使用C++11、C++14标准

北战南征 提交于 2020-03-07 09:35:53
最新版本的Dev C++(即5.11版),经过以下操作后可完美使用新版本C++标准。 1、Tools ——> Compiler Options. 2、勾选“Add the following commands when calling the compiler:”,填入"-std=c++11" 或者"-std=gnu++11" 如果要支持c++14,可以填入"-std=c++14" 或者"-std=gnu++14" 来源: CSDN 作者: 马小酥 链接: https://blog.csdn.net/Aibiabcheng/article/details/104708516

扒一扒 开源发家史;Linux在为谁代言?

时光怂恿深爱的人放手 提交于 2020-03-06 11:43:32
开源,也被称为开放源代码(Open Source)(以下图片来源:互联网) 开源( Open Source)   开源运动起源于20实际60年代的美国,当时麻省理工学院计算机专业的学生经常写一些自由软件彼此共享,后来逐渐发展。   1985年,崇尚自由分享的开源运动代表人物理查德·斯托曼(Richard Stallman)看到软件越来越商业化带来的弊端,发表了著名的GNU宣言,开启了开源运动。 开源起源于软件业,却又超越了软件业的应用边界。    理查德·斯托曼 (Richard Stallman)   理查德·斯托曼在1983年9月27日公开发起自由软件集体协作项目。它的目标是创建一套完全自由的操作系统GNU。1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。 理查德·斯托曼 (Richard Stallman)   理查德·斯托曼作为一个著名的黑客,他最大的影响是为自由软件运动竖立道德、政治及法律框架。他被许多人誉为当今自由软件的斗士、伟大的理想主义者。同时也是美国自由软件运动的精神领袖、GNU计划以及自由软件基金会的创立者。   但不久之后,以微软为主的一些商业公司就破坏了这种风气。这些商业公司从自由的计算机社团里雇佣了大量的技术高手,开发带有知识产权保护的专有软件。他们在分发软件的时候也不再附带源代码。从此,专有软件的时代到来了。 GNU计划(革奴计划)

Linux OS 介绍

独自空忆成欢 提交于 2020-03-01 04:47:02
  Linux操作系统,是一种计算机操作系统,中文读法大致一般为“哩内克斯”,但真正的读法应为“哩纳克斯”。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。 一、概述   简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。   Linux的出现,最早开始于一位名叫Linus Torvalds的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替Minix(是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有Unix操作系统的全部功能,因而开始了Linux雏形的设计。   绝大多数基于Linux内核的的操作系统使用了大量的GNU软件,包括了shell程序、工具、程序库、编译器及工具,还有许多其他程序,例如Emacs。正因为如此,GNU计划的开创者理查德·马修·斯托曼博士提议将Linux操作系统改名为GNU/Linux。但有些人只把操作系统叫做"Linux"。   Linux的基本思想有两点

《学习 GNU EMACS 第二版》学习笔记 (一) 如何建立自己的LISP开发库

丶灬走出姿态 提交于 2020-02-29 21:54:50
《学习 GNU EMACS 第二版》学习笔记 (一) 如何建立自己的LISP开发库 P.458 当你在做了一定数量的LISP程序开发之后,你已经积累了一部分自己写的LISP函数,也许你很想把它们打包到一起做为一个开发包来使用,这样可以很方便地随时调用(当然,你可以把一些函数放在 .emacs 文件中加载,但是一旦数量较多这么做就不太方便了)。 需要2个步骤: 1、创建一个目录,把你的 lisp 代码拷贝到这个目录下; 2、让EMACS知道有这个目录,这样当你试图加载某个程序包时,EMACS才能知道在哪里去找。EMACS把这类目录都记录在全局变量 load-path 中,该变量的值是一个由字符串元素组成的列表,每个字符串是一个目录名。 假设你的LISP代码的目录名为“~mycode/lisp“,那么需要把如下语句添加到 .emacs 文件中: (setq load-path (append load-path (list "~mycoe/lisp"))) 该命令执行后,当你试图加载某个函数时,EMACS会按照目录在 load-path 变量中出现的先后顺序进行查找,也就是说我们新加的目录 "~mycoe/lisp” 在 load-path 变量的最后,所以最后一个被搜索到。 如果希望先从你新设的 "~mycoe/lisp" 目录查起,则如下设置: (setq load-path

Linux系统下的uname命令

旧时模样 提交于 2020-02-29 02:53:48
uname 命令可用于大多数 UNIX 和类 UNIX 系统以及 Linux 。 功能说明:uname用来获取电脑和操作系统的相关信息。 语 法:uname [-amnrsvpio][--help][--version] 补充说明:uname可显示 linux 主机所用的操作系统的版本、硬件的名称等基本信息。 参 数: -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称 -m或–machine 显示主机的硬件(CPU)名 -n或-nodename 显示主机在网络节点上的名称或主机名称 -r或–release 显示linux操作系统内核版本号 -s或–sysname 显示linux内核名称 -v 显示显示操作系统是第几个 version 版本 -p 显示处理器类型或unknown -i 显示硬件平台类型或unknown -o 显示操作系统名 –help 获得帮助信息 –version 显示uname版本信息 uname使用范例 : [root@localhost ~]# uname Linux 注:单独使用uname命令时相当于uname -s [root@localhost ~]# uname -a Linux localhost 2.6.18-4-686 #1 SMP Mon Mar 26 17:17

Windows安装GNU编译器使用makefile

对着背影说爱祢 提交于 2020-02-28 13:03:04
一、下载安装MinGW MinGW 下载网页: http://sourceforge.net/projects/mingw/files/latest/download?source=files 下载后,运行程序: mingw-get-inst-20120426.exe ,选择 download latest repository catalogues. 选择编译器是勾选 C Compiler 与 C++ Compiler ,点击 next 进行下载及安装。 二、设置环境变量 右击计算机 -> 属性 -> 高级系统设置 -> 环境变量,在系统变量中找到 PATH ,将 MinGW 安装目录里的 bin 文件夹的地址添加到 PATH 里面,(注意: PATH 里两个目录之间以英文的 ; 隔开)。打开 MinGW 的安装目录,打开 bin 文件夹,将 mingw32-make.exe重命名为 make.exe 。 三、测试GCC 编译 创建一下 test.c, 用记事本打开该文件,将以下内容复制到文件中。 [cpp] view plain copy #include<stdio.h> #include<stdlib.h> int main( void ){ printf( "Hello, world!\n" ); system( "pause" ); return 0; }

个人环境之ubuntu的apt-get 总结

纵饮孤独 提交于 2020-02-28 03:45:49
前言 apt-get是必须要学会的,如果搞定apt-get,可解决很多问题。接下来鸟才啊总结以往经验。 场景一 指定安装版本 先查看有软件有那些版本可以安装 apt-cache madison gcc-4.8 gcc-4.8 | 4.8.5-4ubuntu8 | http://mirrors.aliyun.com/ubuntu bionic/universe amd64 Packages gcc-4.8 | 4.8.5-4ubuntu8 | http://mirrors.aliyun.com/ubuntu bionic/universe Sources apt-get install -y gcc-4.8=4.8.5-4ubuntu8 场景二 查看那些软件可以安装 apt list // 输出太多了 apt list | grep g++ 场景三 安装gcc g++ 安装gcc,g++ 太麻烦了。第一个是版本太多,第二个同软件的依赖的版本不同,第三没有搞清楚原理,浪费大量的时间。 先查gcc的版本 apt list | grep "g++" WARNING: apt does not have a stable CLI interface. Use with caution in scripts. g++/bionic 4:7.3.0-3ubuntu2 amd64 g++-4.8