Saat mencoba menginstal som_pak-3.1-NAcMoS.tar.gz
file, saya telah menggunakan perintah di bawah ini:
$ tar xvf som_pak-3.1-NAcMoS.tar.gz
$ cd som_pak-3.1
$ cp makefile.unix makefile
$ make
$ cd ..
$ ln -s som_pak-3.1 $NACMOS_HOME/som_pak
Tetapi ketika menjalankan make
perintah saya mendapatkan kesalahan berikut:
* pemisah yang hilang (maksud Anda TAB bukannya 8 spasi?). Berhenti.
- Adakah yang bisa memberi tahu saya alasan kesalahan ini?
- Apakah ada paket yang perlu disertakan dengan ini?
Jawaban:
Kesalahan yang Anda temui:
Berarti
makefile
mengandung spasi bukan Tab. Themake
utilitas ini sangat pilih-pilih tentang penggunaan Spacebukan Tab. Jadi ada kemungkinan bahwamakefile
stanzas berisi Spacedi awal aturan dalam file.Contoh
Katakanlah saya memiliki 3
hello.c world.c main.c :.c
file berikut :Katakanlah saya memiliki yang berikut ini
Makefile
:Sekarang kami mencoba membangun target
Ketika saya menjalankannya terhadap target
helloworld
:Terlihat familier?
Memperbaiki masalah
Anda dapat memperbaikinya dengan mengubah karakter yang Spacessebenarnya Tab. Saya biasa
vim
memperbaiki file saya. Cukup buka saja:Dan kemudian jalankan perintah ini di dalam:
CATATAN:
^I
adalah karakter khusus. Mengetik ^diikuti oleh Iakan ditafsirkan berbeda dibandingkan Ctrl+ V- Ctrl+ I.Ini akan menggantikan semua baris yang dimulai dengan 1 atau lebih Spacesdengan aktual Tab.
Sekarang ketika saya menjalankan kembali
helloworld
target saya :Referensi
sumber
Seperti jawaban lain yang disarankan, Makefiles membutuhkan karakter tab, bukan karakter spasi. Saya memiliki
.vimrc
set saya untuk secara otomatis mengganti semua tab dengan spasi, jadi saya harus secara manual mengatur pengaturan terbalik di Makefiles individu. Thevim
perintah yang saya gunakan adalah sebagai berikut:sumber
# vim: set noet:
Catatan: Cara yang benar untuk menangani masalah khusus ini adalah mengoreksi Makefile sehingga setiap baris tindakan dari setiap resep diindentasikan menggunakan karakter tab tunggal, dan kemudian mengirimkan tambalan untuk itu ke pengembang asli.
Ini adalah hack jelek, yang bekerja dengan versi GNU terbaru
make
(jika masalahnya adalah Makefile menggunakan spasi alih-alih tab, secara konsisten):Ini akan mengatur
make
variabel GNU khusus.RECIPEPREFIX
ke satu ruang. Variabel ini, sejak GNUmake
3.82 atau lebih (2007), mengontrol karakter yang digunakan untuk mengawali garis tindakan resep. Jika variabelnya kosong (seperti standarnya), tab digunakan.Contoh,
Contoh, menunjukkan penggunaannya dengan
>
(mengatur variabel di dalam Makefile dalam kasus ini):Lihat juga:
make
manual GNU .sumber