我是 Ubuntu/Linux 系统的新手。我需要编译 libpng 1.6.14 来分析它的一个二进制文件。我正在运行:
tar -xvf libpng-1.6.14.tar.xz
cd libpng-1.6.14
sudo bash configure --prefix=/usr/local/libpng //is running fine without errors
sudo make install
这是我得到的:
我发现了类似的问题在 Stack Overflow 上
我尝试操作“libtool”文件,但没有成功。有什么建议吗?
答案1
好的,问题似乎是因为提供的./libtool
是 bash 脚本,
$ file ./libtool
./libtool: Bourne-Again shell script, ASCII text executable
但make
默认使用 来执行它,在 Ubuntu 中,默认情况下/bin/sh
它会符号链接到shell:dash
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Apr 4 10:27 /bin/sh -> dash
并且dash
不支持非 POSIX 字符串连接+=
:
$ dash -c 'foo+=bar'
dash: 1: foo+=bar: not found
这确实是您提供的链接中讨论的同一个问题,特别是这个答案
有很多方法可以解决这个问题 - 在我看来最干净的方法是告诉 configure 脚本覆盖 Makefile 的默认SHELL
变量:
./configure SHELL=/bin/bash --prefix=/usr/local/libpng
make
sudo make install
(我建议您重新开始全新安装,即删除 libpng-1.6.14 目录并再次解压档案。)