添加环境变量的问题
昨天学习中遇到个问题 。就是 解压完的 交叉编译器 之后 添加环境变量 /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) |