交叉编译libpng报错:configure: error: zlib not installed

1 篇文章 0 订阅
1 篇文章 0 订阅

交叉编译libpng报错:configure: error: zlib not installed

本次问题的编译环境(build)是Ubuntu,运行目标(Host)是arm-linux。
看报错提示,是我没有安装zlib库,所以我从官网把zlib库下载并安装了zlib库后,依然是报错configure: error: zlib not installed。

zlib的官网地址:http://www.zlib.net/

编译zlib库时,./configure不允许传入–host参数;
这里通过 $ export CC=arm-linux-gnueabihf-gcc(根据自己的交叉编译工具链修改arm-linux-gnueabihf-gcc) 进行配置交叉编译工具。

 cd zlib-1.2.11
 export CC=arm-linux-gnueabihf-gcc
 ./configure
 make
 make install

安装好zlib库后,重新进行libpng库的安装。
解决方法:

cd libpng-1.6.37
export LDFLAGS="-L/home/admin/src/zlib-1.2.11"
export CPPFLAGS="-I/home/admin/src/zlib-1.2.11"
./configure --host=arm-linux-gnueabihf --prefix=$PWD/tmp
make
make install

注意:上面命令要灵活变通地使用,zlib库的路径要根据你实际的路径做出一些修改。

如果你想深究为什么这样就能解决问题,可以参考以下资料:

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CCAS        assembler compiler command (defaults to CC)
  CCASFLAGS   assembler compiler flags (defaults to CFLAGS)
  CPP         C preprocessor
  LT_SYS_LIBRARY_PATH
              User-defined run-time library search path.
  PNG_COPTS   additional flags for the C compiler, use this for options that
              would cause configure itself to fail

转载:http://blog.163.com/huangbao_007/blog/static/356365352008102301434362/
我安装的路径不是/usr,所以遇到了一些问题。下面就讲一下解决办法。
先来看几个相关的环境变量:PATH、LDFLAGS、CFLAGS

PATH:大家应该都很熟悉。安装一个包后可能会在安装目录建立一个bin目录,里面都是些可执行程序,为了让系统能找到这些程序,就需要我们把该路径加入到PATH环境变量中。下面会讲到如何加入。

LDFLAGS:gcc等编译器会用到的一些优化参数,也可以在里面指定库文件的位置。用法:LDFLAGS=“-L/usr/lib -L/path/to/your/lib”。每安装一个包都几乎一定的会在安装目录里建立一个lib目录。如果你明明安装了某个包,而安装另一个包时,它愣是说找不到,那就把那个包的lib路径加入的LDFALGS中试一下吧。

CFLAGS:和LDFLAGS类似,只不过要向里加如的是头文件(.h文件)的路径,如:CFLAGS=“-I/usr/include -I/path/to/your/include”。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include目录加入到该变量中来。

那如何在那些变量中加入这些路径呢?以PATH变量为例。
一种方法是:直接在命令行下:
$ PATH="$PATH:/path/to/your/bin:/another/path/to/bin"
$ export PATH
这种方法的好处是方便,立即生效,缺点是把当前会话或shell关了之后就失效了,下次还得运行一遍。

另一种方法是:把下面的两行内容加入到~/.bashrc文件中,如果想让其影响到整个系统而不仅仅是当前用户,就把下面的内容加入到/etc/bash.bashrc(记得有的系统是/etc/bashrc这个文件)

PATH="$PATH:/path/to/your/bin:/another/path/to/bin"
export PATH

然后,重新启动shell即可。

需要注意的是,PATH变量的分隔符是:号,其他的是空格,
所以LDFLAGS应该是这样:

LDFLAGS=$LDFLAGS -L/path/to/lib -L/path/to/lib”

CFLAGS应该是这样:

CFLAGS=$CFLAGS -I/path/to/iclude -I/path/to/include”
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值