Kompilasi gvim dari sumber?


12

Baru-baru ini, saya menginstal vimseperti:

hg clone https://vim.googlecode.com/hg/ vim
cd vim
sudo ./configure --enable-rubyinterp=yes --enable-pythoninterp=yes --enable-gui=gtk2 --prefix=/opt/vim
make 
make install
make install clean

Jadi, binari VIM saya sekarang hidup di bawah /opt/vim/bin. Inilah ls -ladir ini:

$ ls -la /opt/vim/bin
total 1500
drwxr-xr-x 2 root root    4096 2011-05-25 12:46 .
drwxr-xr-x 4 root root    4096 2011-05-25 12:46 ..
lrwxrwxrwx 1 root root       3 2011-05-25 12:46 ex -> vim
lrwxrwxrwx 1 root root       3 2011-05-25 12:46 rview -> vim
lrwxrwxrwx 1 root root       3 2011-05-25 12:46 rvim -> vim
lrwxrwxrwx 1 root root       3 2011-05-25 12:46 view -> vim
-rwxr-xr-x 1 root root 1504188 2011-05-25 12:46 vim
lrwxrwxrwx 1 root root       3 2011-05-25 12:46 vimdiff -> vim
-rwxr-xr-x 1 root root    2084 2011-05-25 12:46 vimtutor
-rwxr-xr-x 1 root root   13900 2011-05-25 12:46 xxd

Dimana saya vim.gtk? Saya tentukan --enable-gui=gtk2dalam konfigurasi. Bukankah seharusnya dikatakan installer saya ingin versi GUI serta aplikasi konsol?

Saya menentukan gtkversi dengan benar:

$ dpkg -l libgtk[0-9]* | grep ^i
ii  libgtk2-perl                          1:1.221-4                                  Perl interface to the 2.x series of the Gimp Toolkit library
ii  libgtk2.0-0                           2.18.3-1ubuntu2.2                          The GTK+ graphical user interface library
ii  libgtk2.0-bin                         2.18.3-1ubuntu2.2                          The programs for the GTK+ graphical user interface library
ii  libgtk2.0-common                      2.18.3-1ubuntu2.2                          Common files for the GTK+ graphical user interface library

PEMBARUAN : Ada tertulis di src / INSTALL

 88 Unix: COMPILING WITH/WITHOUT GUI
 89
 90 NOTE: This is incomplete, look in Makefile for more info.
 91
 92 These configure arguments can be used to select which GUI to use:
 93 --enable-gui=gtk      or: gtk2, motif, athena or auto
 94 --disable-gtk-check
 95 --disable-motif-check
 96 --disable-athena-check
 97
 98 --enable-gui defaults to "auto", so it will automatically look for a GUI (in
 99 the order of GTK, Motif, then Athena).  If one is found, then is uses it and
100 does not proceed to check any of the remaining ones.  Otherwise, it moves on
101 to the next one.

Jadi saya mencoba untuk tidak menentukan dengan --enable-guiharapan akan menemukan mesin / toolkit GUI yang digunakan sendiri ... Masih hasil yang sama :(

UPDATE : Selanjutnya:

/opt/vim/bin$ ./vim -g
E25: GUI cannot be used: Not enabled at compile time

PEMBARUAN :

Apakah saya memerlukan SEMUA ini:

$ sudo aptitude search gtk | grep dev
p   gnunet-gtk-dev                  - secure, trust-based peer-to-peer framework
v   gtkgl-dev                       -                                           
p   gtkparasite                     - GTK+ debugging and development tool       
p   libaiksaurusgtk-1.2-dev         - graphical interface to the Aiksaurus toolk
v   libaiksaurusgtk-dev             -                                           
p   libcanberra-gtk-dev             - a simple abstract interface for playing ev
p   libchamplain-gtk-0.4-dev        - A Gtk+ widget to display maps (development
p   libclutter-gtk-0.10-dev         - Open GL based interactive canvas library G
p   libdbusmenu-gtk-dev             - Menus over DBus shared library for GTK    
p   libempathy-gtk-dev              - High-level library and user-interface for 
v   libequeue-gtk2-ocaml-dev        -                                           
p   libexif-gtk-dev                 - Library providing GTK+ widgets to display/
p   libgalago-gtk-dev               - libraries and header files for developing 
p   libgdu-gtk-dev                  - GTK+ standard dialog library for libgdu - 
p   libggadget-gtk-1.0-dev          - Google Gadgets GTK+ development files     
p   libggz-gtk-dev                  - GGZ Gaming Zone: core client embedding lib
p   libghc6-gtk-dev                 - A GUI library for Haskell (Gtk2Hs) -- GTK+
p   libghc6-gtkglext-dev            - A GUI library for Haskell (Gtk2Hs) -- gtkg
p   libghc6-gtksourceview2-dev      - A GUI library for Haskell (Gtk2Hs) -- GtkS
p   libghc6-soegtk-dev              - A GUI library for Haskell (Gtk2Hs) -- soeg
p   libglrr-gtk-dev                 - Development library of Grift (gtk)        
p   libgpod-nogtk-dev               - development files for libgpod (version wit
p   libgtk-directfb-2.0-dev         - Development files for the GTK+ library - D
p   libgtk-vnc-1.0-dev              - A VNC viewer widget for GTK+ (development
i   libgtk2.0-dev                   - Development files for the GTK+ library
p   libgtkada2-dev                  - Development files for libgtkada2
p   libgtkdatabox-0.9.0-1-dev       - A Gtk+ library to display large amounts of
v   libgtkdatabox-dev               -
p   libgtkextra-x11-2.0-dev         - A useful set of widgets for GTK+ (developm
p   libgtkgl2.0-dev                 - OpenGL area for GTK (development files)
p   libgtkglext1-dev                - OpenGL Extension to GTK+ (development file
p   libgtkglextmm-x11-1.2-dev       - C++ bindings for GtkGLExt (Development fil
p   libgtkhex0-dev                  - GNOME Hex editor for files (development he
p   libgtkhtml-editor-dev           - HTML rendering/editing library - editor wi
p   libgtkhtml2-dev                 - HTML rendering/editing library - developme
p   libgtkhtml3.14-dev              - HTML rendering/editing library - developme
p   libgtkhtml3.8-dev               - HTML rendering/editing library - developme
p   libgtkimageview-dev             - image viewer widget for GTK+ (development
p   libgtkmathview-dev              - rendering engine for MathML documents
p   libgtkmm-2.4-dev                - C++ wrappers for GTK+ 2.4 (development fil
p   libgtkmm-utils-dev              - utility functions, classes and widgets wri
p   libgtksourceview-dev            - development files for the GTK+ syntax high
p   libgtksourceview2.0-dev         - development files for the GTK+ syntax high
p   libgtksourceviewmm-1.0-dev      - C++ binding of GtkSourceView - development
p   libgtksourceviewmm-2.0-dev      - C++ binding of GtkSourceView - development
p   libgtkspell-dev                 - Development files for GtkSpell
p   libindicate-gtk-dev             - GNOME panel indicator applet - shared libr
p   libjana-gtk-dev                 - A set of GTK+ widgets to visualise libjana
p   liblablgtk2-gl-ocaml-dev        - OCaml bindings to GtkGL
p   liblablgtk2-gnome-ocaml-dev     - OCaml bindings to GNOME
p   liblablgtk2-ocaml-dev           - OCaml bindings to Gtk+ version 2
p   liblablgtkmathview-ocaml-dev    - OCaml bindings for libgtkmathview, a GTK w
p   liblablgtksourceview-ocaml-dev  - OCaml bindings for libgtksourceview, a sou
v   libnotify-dev-gtk2.10           -
p   libocamlnet-gtk2-ocaml-dev      - OCaml application-level Internet libraries
p   libpolkit-gtk-1-dev             - PolicyKit GTK+ API - development files
v   libsylpheed-claws-gtk2-dev      -
p   libtinymailui-gtk-dev           - Framework for mobile applications with e-m
p   libtinymailui-gtkhtml-dev       - Framework for mobile applications with e-m
p   libtracker-gtk-dev              - GTK+ widgets for apps that use tracker - d
v   libunicapgtk-dev                -
p   libunicapgtk2-dev               - graphical widgets for unicap - development
p   libwxgtk2.6-dev                 - wxWidgets Cross-platform C++ GUI toolkit (
p   libwxgtk2.8-dev                 - wxWidgets Cross-platform C++ GUI toolkit (
p   libzbargtk-dev                  - scanning and decoding bar codes (GTK+ bind
p   python-galago-gtk-dev           - Galago presence library (Python interface)
p   python-gtk2-dev                 - GTK+ bindings: devel files
p   telepathy-devel-gtk             - Telepathy Development packages for GTK

Sepertinya sebagian besar paket ths saya tidak perlu. Misalnya Kerangka untuk aplikasi seluler, ... HTML renderers, dll. Yang saya instal adalah libgtk2.0-dev... Tetap, saya tidak bisa mengkompilasi gVIM.... Agrhhhhh


Mengapa Anda melakukan "sudo ./configure [...]"? Skrip configure tidak perlu dijalankan sebagai root. Saya dapat mengerti melakukan "sudo make isntall", meskipun Anda tidak perlu melakukan "make install" dan kemudian "make install clean" karena itu akan menginstal Vim dua kali — cukup lakukan "make install; make clean".
Heptite

Anda tidak perlu menginstal banyak file dev acak. Jika skrip configure tidak dapat menemukan perpustakaan yang dibutuhkan, itu akan menolak untuk menghasilkan makefile. . Sepertinya masalah Anda ada pada configuredirinya sendiri. Saya akan memeriksa config.log, dan melihat bagaimana menangani --enable-guiopsi, dll.
jpaugh

Jawaban:


7

Saya memiliki masalah serupa menginstal gvim 7.3 ke Centos 6.2 (x86_64)

Beberapa paket devel yang diperlukan tidak ada. Untuk menginstalnya:

yum groupinstall "Desktop Platform Development"

[Untuk melihat semua grup yang tersedia: yum grouplist]

Kemudian bangunan dari sumber baru saja bekerja

wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
bunzip2 vim-7.3.tar.bz2
tar xf vim-7.3.tar
cd vim73

./configure --prefix=/home/me/vim73
make
make install

Untuk menemukan file apa yang hilang:

./configure | less

dan mencari 'gui' menunjukkan bahwa header terkait X11 hilang.


4

Di ubuntu saya mengkompilasi vim dengan cara berikut:

sudo apt-get build-dep vim
sudo apt-get build-dep libx11-dev libxtst-dev

make distclean

./configure --with-compiledby="David Gamba <davidgamba@gambaeng.com>" \
--with-features=huge \
--enable-gui=auto \
--with-x \
--enable-rubyinterp \
--with-ruby-command=/usr/bin/ruby \
--enable-perlinterp \
--enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config \
--enable-fontset \
--enable-cscope \
--enable-gtk2-check \
--enable-gnome-check

make

Pada titik ini, cd srcdan cek untuk benar dukungan X11 dan clipboard: ./vim --version. Kemudian:

sudo make install

Untuk Fedora (menggunakan desktop KDE) saya menginstal paket-paket berikut:

yum install gcc libX11-devel libXtst-devel ncurses-devel perl-ExtUtils-Embed ruby ruby-devel python-devel gtk2-devel libXt-devel

Dan mengubah perintah configure saya sebagai berikut:

./configure --with-compiledby="David Gamba <davidgamba@gambaeng.com>" \
--with-features=huge \
--enable-gui=auto \
--with-x \
--enable-rubyinterp \
--with-ruby-command=/usr/bin/ruby \
--enable-perlinterp \
--enable-pythoninterp --with-python-config-dir=/usr/lib64/python2.7/config \
--enable-fontset \
--enable-cscope \
--enable-gtk2-check \
--enable-gnome-check \
--enable-fail-if-missing

Setelah itu saya mendapatkan yang berikut:

gvim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled May  4 2014 19:43:27)
Included patches: 1-274
Compiled by David Gamba <davidgamba ...>

EDIT: Lupa menyebutkan bahwa untuk Fedora saya mendapatkan kesalahan dengan lokasi xsubppskrip perl sehingga saya akhirnya memodifikasi Makefile berkat beberapa laporan bug online.

--- a/src/Makefile      Fri May 02 15:46:14 2014 +0200
+++ b/src/Makefile      Sun May 04 19:56:20 2014 -0600
@@ -2465,7 +2465,7 @@

 auto/if_perl.c: if_perl.xs
        $(PERL) -e 'unless ( $$] >= 5.005 ) { for (qw(na defgv errgv)) { print "#define PL_$$_ $$_\n" }}' > $@
-       $(PERL) $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap \
+       $(PERL) /usr/bin/xsubpp -prototypes -typemap \
            $(PERLLIB)/ExtUtils/typemap if_perl.xs >> $@

  auto/osdef.h: auto/config.h osdef.sh osdef1.h.in osdef2.h.in

2

Anda dapat menggunakan perintah berikut untuk menemukan dependensi yang diperlukan untuk gvim:

sudo apt-get build-dep vim

Jika Anda belum menambahkan repositori sumber di file source.list Anda di / etc / apt /, Anda dapat membuka file ini, menduplikasi entri di dalamnya dan mengubah "dep" menjadi "dep-src".

Setelah semua dependensi diinstal, Anda dapat mengkompilasi vim dengan gui.


1

Ini terlihat seperti kasus tidak memiliki cukup *-develpaket yang diinstal. Coba instal semua paket devel. Saya pikir ada paket meta untuk menginstal sebagian besar dari mereka. Coba gnome-devel. Maaf saya tidak memiliki Ubuntu di dekat sini sekarang.

Untuk mengkompilasi berbagai varian vim (mis. GUI dan non-GUI), Anda harus mengkonfigurasi / mengkompilasinya beberapa kali.


Pada sistem mirip Unix, tidak ada alasan untuk membangun versi GUI dan non-GUI yang terpisah. Sebuah "normal" membangun dan menginstal akan membuat biner tunggal bernama vimmana semua bentuk lain dari Vim-- gvim, view, ex, dll .-- terkait. Vim tahu kepribadian mana yang harus diadopsi berdasarkan nama yang digunakannya.
garyjohn

Anda benar, Anda tidak harus melakukannya. Tetapi sebagian besar distro memiliki build terpisah untuk varian GUI dan non-GUI, tersedia dalam paket biner yang berbeda. Sesuatu seperti versi minimaldan a full featured. OP sepertinya ingin juga melakukan itu.
Keith

Saya menggunakan KDE, jadi saya sebenarnya memiliki K Ubuntu
Nemoden

Yang mengatakan, saya setuju dengan Keith bahwa sepertinya Anda kehilangan beberapa paket pengembangan. Ada perintah apt-get yang akan menginstal dependensi build dari target yang ditentukan, tetapi saya juga tidak memiliki sistem Ubuntu yang berguna saat ini.
garyjohn

1
Meski begitu, Anda menginginkan gtk + GUI build, jadi Anda perlu semua paket devel gtk diinstal. gnome-devel adalah paket meta yang akan menarik mereka. Mereka mungkin lebih kecil, gtk spesifik. Tapi saya tidak bisa memeriksa sekarang.
Keith

1

Saya juga gagal membangun vim73 dengan opsi enable-gui di RHEL6.1 karena kurangnya X11 / Intrinsic.h . Apakah linux Anda memiliki file include? Jika tidak, Anda bisa mendapatkannya dari paket libxt-dev .


0

Tonton hasilnya saat Anda menyusun vim. Saya belum mengkompilasi vim sendiri, tetapi saya cukup yakin akan ada beberapa peringatan / kesalahan terkait file yang hilang yang diperlukan untuk gvim.


Sayangnya ketika memberitahu Anda bahwa Anda kehilangan sesuatu, itu tidak memberi tahu Anda paket mana yang menyediakan itu atau apa nama perpustakaan yang menyediakan, jadi itu sebabnya Anda perlu memberikan sedikit lebih banyak dari itu.
DavidG
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.