linux下 gcc可以编译hello.c arm-linux-gcc 无法找到libz.so.1
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下 gcc可以编译hello.c arm-linux-gcc 无法找到libz.so.1相关的知识,希望对你有一定的参考价值。
加过-L/usr/lib也不行
arm编译器的库文件在编译器包里面,路径和系统gcc的那个不一样,去交叉编译链包里面找去吧,如果找不到那就真没有了。 参考技术A 把这个依赖库赋值过去啊, find / -name libz.so.1 找下这个库的路径; 参考技术B 你没有安装arm开发用的交叉编译工具链吧?追问安装了路径也添加了,arm-linux-gcc -v可以用,但是就是编译的时候找不到库
追答“arm-linux-gcc -v可以用”只说明交叉编译器能正常工作了,“无法找到libz.so.1”则说明你的交叉编译用的库没正确安装。
arm-linux-gcc等交叉编译工具的安装
1.软件安装
步骤1:打开虚拟机,在/usr/local/下创建/usr/local/arm文件夹(一般用户自定义程序放到这里)
步骤2:先将安装包从Windows中弄到linux中去。可以用共享文件夹,也可以用Samba,也可以cuteftp。
步骤3:解压。tar -jxvf arm-2009q3.tar.bz2
到真正的应用程序的安装目录下(也就是/usr/local/arm/arm-2009q3/bin),去执行arm-linux-gcc -v
执行方法是:./arm-none-linux-gnueabi-gcc -v
执行后可以得到一长串输出,其中有“gcc version 4.4.1 ”字样,即表示安装成功。
2.配置环境变量
环境变量就是操作系统的全局变量。每一个环境变量对操作系统来说都是唯一的,名字和所代表的意义都是唯一的。linux系统可以有很多个环境变量。其中有一部分是linux系统自带的,还有一些是我们自己来扩充的。我们这里涉及到的一个环境变量是PATH。
PATH这个环境变量是系统自带的,它的含义就是系统在查找可执行程序时会搜索的路径范围(动态库文件so也会涉及到这个)。
echo $PATH可以显示出当前PATH环境变量的地址
export PATH=/usr/local/arm/arm-2009q3/bin:$PATH 将/usr/local/arm/arm-2009q3/bin:添加到PATH里面(前面(头插入))
当前设置后,会发现下次打开后环境变量又恢复了。得重新配置。
解决方案是在~/.bashrc中,添加export PATH=/usr/local/arm/arm-2009q3/bin:$PATH 即可。
~/.bashrc会在打开终端时自动执行。(我将共享文件夹挂载也写了进去,就不用每次开机都挂载一次)
3.建立软链接(符号链接)
ln arm-none-linux-gnueabi-addr2line -s arm-linux-addr2line
linux中的目录管理方法。技术角度来讲,linux中所有目录性质都是一样的,所以技术角度来讲我们把软件安装到哪里都行。但是因为如果胡乱放置,将来程序可能不好找。所以久而久之大家就总结了一个文件放置的一般定义,譬如说/bin目录放置一些系统自带的用户使用的应用程序,/sbin目录下存放的是系统自带的系统管理方面的应用程序。
那我们装软件放在哪里?一般都在/usr目录下。我们安装arm-linux-gcc,就在/usr/local/底下创建一个arm文件夹,然后装到里面。
以上是关于linux下 gcc可以编译hello.c arm-linux-gcc 无法找到libz.so.1的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu arm-linux-gcc 4.4.3怎么编译hello.c
“linux”怎么编译c的源程序的?“gcc”编译命令是啥?