coreutils学习——单独编译源码
来源:互联网 发布:阿里云cdn加速设置 编辑:程序博客网 时间:2024/05/29 15:15
1、源码编译通过:
为了这个源码编译,由于缺乏经验,弄了好久。。。下面把我的经验分享如下:
因为自己把APUE的各个章节算是看了一遍,想通过阅读别人写的代码提高自己的程序能力,网上很多人推荐了coreutils源码。coreutils源码是Linux下面很多小命令的一个集合,里面包含了像cp、mv、cat等命令的源码,因此相信无论是学习SHELL还是学习APUE都是不错的选择。
- 源码的下载地址可以http://www.gnu.org/software/coreutils/这个网址下载;
- 下载之后然后解压,可以看到文件夹(我这里是/home/ldh64103/coreutils)里面有configure文件,进入到文件夹里运行./configure;
- 现在可以看到文件夹里面经过./configure之后生成了Makefile文件;
- 运行make,这一步需要通过,因为很多源码需要的.h文件(如config.h)都是经过这一步之后生成的;
- make install是安装程序,这里我们不需要安装。
- 进入src里面,我们可以看到里面有很多我们以前熟悉命令的.c文件、.h文件和.o文件(经过汇编生成的文件)。
- 我们复制cat.c文件到我们一个指定的目录(我这里是/tmp/cat);
- 进入/tmp/cat目录;
- 现在我们需要对cat.c文件进行单独编译;
- 在这里犯了很大的错误:因为单独编译的时候直接:gcc cat.c -o cat;这样提示找不到config.h文件,然后网上各种搜解决方法,看到别人用软链接将config.h链接到autoconf.h文件上,各种改cat.c的#include,但是最后都没有解决;因为我不知道config.h是由运行./configure命令自动生成的,在/home/ldh64103/coreutils/lib目录下。原来人家的改符号链接是在编译内核和驱动的情况下使用的。
- 运行gcc -E -I /home/ldh64103/coreutils -I /home/ldh64103/coreutils/lib -I /home/ldh64103/coreutils/src cat.c -o cat.i;(预处理)
- 运行gcc -c cat.i -o cat.o;(编译)
- 运行gcc -L /home/ldh64103/coreutils/lib/ -L /usr/lib cat.o -o cat -lcoreutils -lcrypt;(链接) -lcoreutils 和 -lcrypt两个是连接两个动态库,两个文件的具体目录大家可以在命令行键入:find -name "libcoreutis.so" -print 来查找libcoreutils.so的目录,从而修改前面两个文件的相应搜索目录;
- 但是运行的时候还没有通过,提示undefined reference to “Version”;这个还没有找到解决办法,我只能进入到cat.c文件当中把VERSION那行注释掉,这样最终才链接通过。这个问题只有等到将源码阅读一下才能知道怎么解决。
- 源码还没阅读,现在只是编译通过,嘿嘿,继续加油!
0 0
- coreutils学习——单独编译源码
- coreutils源码学习之——mkdir.c
- GNU CoreUtils 命令源码重编译
- 编译Coreutils
- coreutils学习——vim插件(cscope、ctags、taglist)
- 【C++】学习笔记四十四——单独编译
- 安卓系统源码编译系列(六)——单独编译内置浏览器WebView教程
- 安卓系统源码编译系列(七)——单独编译WebView兼容性问题解决
- 安卓系统源码编译系列(七)——单独编译WebView兼容性问题解决
- coreutils交叉编译方法
- 交叉编译ARM平台coreutils
- coreutils
- android源码单独编译的方法
- 如何编译Android源码的单独模块
- android源码模块单独编译方案
- 单独编译Android源码的模块。
- Android 源码单独编译和文件替换
- Android源码Build之单独编译
- 非法触摸的解决方案
- 黑马程序员-StringBuffer和集合
- JBPM基础知识
- c编程常见错误
- 选择广州传智播客.Net培训让我重新走出阴霾
- coreutils学习——单独编译源码
- base64加密 or base64编码?
- CURL常用命令
- 图形编程入门(VS2010)
- eclipse使用link方式安装SVN插件
- mfc采用ado连mysql数据库
- JVM参数设置、分析
- 黑马程序员-异常总结
- 初学CodeIgniter