Chinaunix首页 | 论坛 | 博客
  • 博客访问: 209370
  • 博文数量: 32
  • 博客积分: 306
  • 博客等级: 二等列兵
  • 技术积分: 337
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-15 10:02
文章分类
文章存档

2013年(21)

2011年(11)

我的朋友

分类: LINUX

2011-11-15 11:18:10

添加环境变量的问题
 
昨天学习中遇到个问题 。就是 解压完的 交叉编译器 之后 添加环境变量 /etc/profile 里面的路径后 也用 source 生效后。
#source /etc/profile  对修改过后的环境变量 生效
利用 arm-linux-gcc  -v查看版本 结果还是上次应用的 编译器版本,当时没有找到原因。结果今天早上来发现 添加的环境变量之后 查看了下   #vi /etc/profile  里面的
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
#export PATH=/usr/local/arm/4.3.2/bin:$PATH   (其中#表示注释。其后的内容不起作用被注释掉)
#export PATH=/usr/local/arm/2.95.3/bin:$PATH
export PATH=/usr/local/arm/3.3.2/bin:$PATH
 
之后 结果编译器版本没有信息。
 
结果今天早上来查看了下 usr/local/arm  目录里面的文件夹 居然没有 3.3.2 文件夹 最后才发现原来解压的时候出现了问题。 解压 没有解到  真正的 /usr/local/arm  下 而是解到了 /wjm/usr/local/arm下 。
解压 .tar.bz2 文件 
用  #tar xjvf *.tar.bz2
 
-C 是指定你的压缩包要解压到的目录
比如:tar -xzvf log.tar.gz -C /tmp/ 就是要解压到tmp目录下!
 
在/home/wjm目录下解压交叉编译器时候
#tar xjvf arm-linux-gcc-3.3.2 -C /  (直接 解压到  /usr/local/arm  目录下 )
则之前设定的路径就生效成功了,问题解决。哈哈
 
 
如果不这么解决 也可以直接 把解压在/home/wjm/sur/local/arm  下的文件移动到 指定目录下
命令如下:
首先要先到指定目录下执行
[root@localhost arm]# mv /home/wjm/usr/local/arm/3.3.2/  ./
执行后会直接移动到  /usr/local/arm 目录下
 
 
 
一般的源码包都会有 Makefile 文件 直接执行 #make 就可以编译了 但是有的源码包里是没有的如
boa-0.94.13 源码包里就没有 再其文件夹下会有个src的文件夹一般 src 都表示软件的源码目录
但是src目录下也没有makefile 文件 
用make  编译源码的步骤 首先 可以先执行 configure 文件来生成  makefile文件
[root@localhost src]# ./configure  来执行configure
之后会生成个makefile文件
 
因为我们要使用的是交叉编译器所以 要修改下 makefile文件的内容
首先打开[root@localhost src]# vi Makefile
然后查找CC=gcc  要把 gcc改为我们使用的编译器 arm-linux-gcc
然后CCP=gcc -E  也要 换成arm-linux-gcc -E
保存退出后 就可以执行 [root@localhost src]# make  来编译了
编译成功完成后 会生成个boa的可执行文件
 
这也叫做移植
 
**********************************************************************************************
 
编译出错问题如下:
 
 
编译一个linux下的c系统,包含词法和语法分析模块,Linux上用bison和flex。

  yacc是一个文法分析器的生成器,bison即是yacc的GNU版本.Lex和YACC是用于构造词法分析机和语法解释器的工具,利用Lex和YACC你可以轻松的构造一个语法解释器。

  一开始make

  错误1:

  debian:/home/a/boa-0.94.13/src# make

  yacc -d boa_grammar.y

  make: yacc: Command not found

  make: *** [y.tab.c] Error 127

  解决方法:

  debian:/home/a/boa-0.94.13/src# apt-get install bison

  错误2:

  debian:/home/a/boa-0.94.13/src# make

  lex boa_lexer.l

  make: lex: Command not found

  make: *** [lex.yy.c] Error 127

  解决方法:

  debian:/home/a/boa-0.94.13/src# apt-get install flex

  错误3:

  debian:/home/a/sss/boa-0.94.13/src# make

  gcc -g -O2 -pipe -Wall -I. -c -o util.o util.c

  util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token

  make: *** [util.o] Error 1

  解决方法:

  修改 src/compat.h

  找到

  #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

  修改成

  #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

  然后

  debian:/home/a/sss/boa-0.94.13/src# make clean

  debian:/home/a/sss/boa-0.94.13/src# make

  出现:

  debian:/home/a/sss/boa-0.94.13/src# make

  make: Nothing to be done for `all'.

  说明make没有检查到需要编译的东西,库或者应用程序已经编译好了。

  make主要检查的是时间戳,只要target比依赖的文件时间靠后它就认为不需要编译。

阅读(1105) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:linux学习笔记1

给主人留下些什么吧!~~