
Ich bin neu bei Ubuntu/Linux-basierten Systemen. Ich muss libpng 1.6.14 kompilieren, um eine seiner Binärdateien zu analysieren. Ich verwende:
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
Das ist, was ich bekomme:
Ich habe ein ähnliches Problem gefundenhier auf Stack Overflow
Ich habe versucht, die Datei „libtool“ zu bearbeiten, aber ohne Erfolg. Irgendwelche Vorschläge?
Antwort1
OK, das Problem scheint also darin zu liegen, dass es sich bei dem bereitgestellten Skript ./libtool
um ein Bash-Skript handelt.
$ file ./libtool
./libtool: Bourne-Again shell script, ASCII text executable
aber make
standardmäßig wird es mit ausgeführt /bin/sh
, das in Ubuntu dash
standardmäßig mit der Shell verknüpft ist:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Apr 4 10:27 /bin/sh -> dash
und dash
unterstützt nicht die Nicht-POSIX-Zeichenfolgenverkettung +=
:
$ dash -c 'foo+=bar'
dash: 1: foo+=bar: not found
Dies ist tatsächlich das gleiche Problem, das in dem von Ihnen angegebenen Link diskutiert wird, insbesonderediese Antwort
Es gibt mehrere Möglichkeiten, dies zu lösen. Die sauberste besteht meiner Meinung nach darin, dem Konfigurationsskript mitzuteilen, dass es die Standardvariable des Makefiles überschreiben soll SHELL
:
./configure SHELL=/bin/bash --prefix=/usr/local/libpng
make
sudo make install
(Ich schlage vor, Sie beginnen mit einer Neuinstallation, d. h. löschen das Verzeichnis libpng-1.6.14 und entpacken das Archiv erneut.)