开发者社区> 异步社区> 正文

《C程序设计新思维》一1.6 以源文件利用库(即使你的系统管理员不想叫你这么做)

简介:
+关注继续查看

本节书摘来自异步社区《C程序设计新思维》一书中的第1章,第1.6节,作者 【美】Ben Klemens,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.6 以源文件利用库(即使你的系统管理员不想叫你这么做)

你可能已经注意到了上一章节最后的关于为何你需要有root权限来安装POSIX系统到你的通常位置的警告。但是你在工作场所的共享机器里可能没有root权限,或者你被有特别的权限的某人控制。

那你就必须走入地下,制作一个属于自己的root目录。

第一步很简单,即创建这个目录:


2862c91a72f3a18e934dc9e898f673a2d7dbdcac

由于我已经有了一个~/tech目录,用来保存我所有的技术文档、手册和源代码,所以我建立的是~/tech/root目录。名字其实无所谓,但是我还是喜欢用~/root作为本书的示范目录。


e530519e2a30c69572fbc99dd9737ab80ae4a2d6

shell可以将波浪线替换为你个人主目录的完整路径,节省你很多打字的时间。POSIX标准只要求shell在一个词或者一个冒号(你需要做为一个路径类型的变量)的开始这么做,但是多数的shell扩展支持了词中间的波浪线。其他的程序,比如make,或许能也或许不能识别你个人主目录的波浪线。
第二步,把新建的root系统添加到所有相关的路径上去。修改.bashrc或(其他shell的该配置文件)的PATH变量如下:


96c90a92947bc441f9ba896041bff230abba1440

如果把你的新的目录的bin子目录添加在你的原来的PATH前面,这个子目录就将被首先查找,并且你放在那里的任何程序都将被率先找到。那么,你就可以把标准共享目录中的任何程序的替代版本放在那里。

手册

我记得以前的确有印刷版本的手册,不过现在它是在man命令中的。例如,用man strtok来阅读关于strtok函数的内容,一般包括需要包含什么样的头文件、输入参数,以及它的基本用法的解释。手册文档倾向于简洁明了,有时候缺乏示例,并且假设读者已经有了一些这个函数的基本用法的知识。如果你需要一个更加基本的教程,可以用常用的搜索引擎在Internet上找到几个(对于strtok这个例子,你可以参见“9.2 strtok的颂歌”)。GNU C库的手册,也很容易在网上找到,对初学者而言是非常易懂的。

如果你无法想起要找的函数的名字,每个手册页都有一个一行长的简述,man -k searchterm将搜索那些简述。许多系统还提供apropos命令,它和man–k类似但是多了一些别的功能。为了进一步的利用,我经常把apropos命令的输出用管道导出给grep命令。
手册分为几段。第1段是命令行命令,第3段是库函数。如果你的系统有一个命令行程序叫做printf,那么man printf将展示这个命令的文档,而man 3 printf将展示C库函数中的printf的文档。
如果想了解更多关于man命令的用法(比如各段的完整列表),可以使用man man。
你的文本编辑器或者IDE可能有某种快速调用手册页的方法。例如,vi的使用者可以把鼠标放在一个词语上,用K键来打来这个词语的手册页。
对于那些你想链接的C程序库,请注意在前面的makefile中的新搜索路径:


4304e787b1b23cee7909bb6c82a791061086b859

现在你已经有了一个本地的root目录,你也可以在别的系统上使用它,比如Java的CLASSPATH。

最后一步是在新的root目录上安装程序。如果你有源代码并使用Autotools,你只需要在合适的位置添--prefix=$HOME/root:


36ae83ae69b3ca92c3c64e77d466ad6eb7f69321

现在我们不需要sudo来执行做安装步骤,因为所有的工作都在你的自治领地里。

这些程序和库都在你的主目录中,所使用的许可权不会超出你所具有的范围,系统管理员不能抱怨你做了任何危害他人的事情。如果你的系统管理员还是有所抱怨,那么,可悲的是,你也许到了该和他分手的时候了。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
心中有“树”!图文并茂介绍数据结构中常见的树(一)
提到数据结构中的树(Tree) ,大家应该都不陌生,相关书籍中都有大段篇幅的介绍,刷 Leetcode 的时候会遇到很多相关问题。很多人往往会用 “手写红黑树” 来形容面试难度很高。
10 0
这个开源项目绝绝子,一键生成好玩的矢量风格头像!
最近逛 GitHub,发现了一个非常好玩的开源项目——头像生成器,给大家分享一下~
6 0
心中有“树”!图文并茂介绍数据结构中常见的树(三)
在前面两篇文章中,我们简要介绍了数据结构中的各种【树】在搜索、数据库等领域的使用场景,希望对大家有所帮助。
11 0
文本点击率预估挑战赛-冠亚季军方案总结(上)
文本点击率预估挑战赛-冠亚季军方案总结(上)
6 0
JSP - 起源、执行过程、运行原理、生命周期
JSP - 起源、执行过程、运行原理、生命周期
6 0
一个无需等待的世界不美吗?为什么游戏开发中需要人为的制造等待?
本文主要内容有微信小游戏开发中的 3 种不同的等待积木块的使用场景和使用方法。 这是微信小游戏开发的基础系列,使用的游戏开发工具为“微信小游戏制作工具”。
5 0
Win系统 - 重装系统(微PE、MSDN镜像)【绝对纯净】
Win系统 - 重装系统(微PE、MSDN镜像)【绝对纯净】
14 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载