Centos手動編譯安裝vim8


系統:CentOs6.9

gcc版本:5.1.0

github上拉取vim工程之后,cd src,執行一下命令:

$ ./configure
$ sudo make
gcc -c -I. -Iproto -DHAVE_CONFIG_H     -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1        -o objects/arabic.o arabic.c
gcc: error trying to exec 'cc1': execvp: No such file or directory
make: *** [objects/arabic.o] Error 1

發現找不到cc1。全局找下cc1在哪:

$ sudo find / -name cc1
/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/5.1.0/cc1
/usr/libexec/gcc/x86_64-redhat-linux/4.4.4/cc1
/root/software/gcc-5.1-build/gcc/cc1
/root/software/gcc-5.1-build/stage1-gcc/cc1
/root/software/gcc-5.1-build/prev-gcc/cc1

建立一個軟連接:

$ sudo ln -s /usr/local/libexec/gcc/x86_64-unknown-linux-gnu/5.1.0/cc1 /usr/bin/cc1

重新編譯一下:

$ sudo make
gcc -c -I. -Iproto -DHAVE_CONFIG_H     -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1        -o objects/arabic.o arabic.c
In file included from os_unix.h:21:0,
                 from vim.h:246,
                 from arabic.c:16:
/usr/include/stdio.h:34:21: fatal error: stddef.h: No such file or directory
compilation terminated.
make: *** [objects/arabic.o] Error 1

發現還是有問題,而且這個報錯報在了庫文件

全局找下這個文件:

$ sudo find / -name stddef.h
/usr/local/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/include/stddef.h
/usr/include/linux/stddef.h
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/include/stddef.h
/root/software/gcc-5.1-build/gcc/include/stddef.h
/root/software/gcc-5.1-build/stage1-gcc/include/stddef.h
/root/software/gcc-5.1-build/prev-gcc/include/stddef.h
/root/software/gcc-5.1.0/gcc/ginclude/stddef.h
/root/software/gcc-5.1.0/libstdc++-v3/include/c_compatibility/stddef.h

發現是能找到,不過報錯的文件的位置,是/usr/include/stdio.h,感覺是路徑問題了。

嘗試用sudo權限運行./configure:

$ sudo ./configure
configure: loading cache auto/config.cache
checking whether make sets $(MAKE)... (cached) yes
checking for gcc... (cached) gcc
checking whether the C compiler works... no
configure: error: in `/home/haiming.li/opensource/vim/src':
configure: error: C compiler cannot create executables
See `config.log' for more details

同樣通過find命令,找到config.log所在的位置是src/auto下面,打開看看:

感覺很莫名的報錯,而且為何sudo與非sudo執行的時候結果差別那么大呢?

猜測是sudo的gcc跟非sudo下的gcc,版本不一致,嘗試驗證下:

$ which gcc
/usr/local/bin/gcc

$ sudo which gcc
/usr/bin/gcc

果然,sudo和非sudo下,gcc調用的執行程序不一樣。/usr/local/bin/gcc --version 和 /usr/bin/gcc --version的執行結果是一樣的,這個比較莫名。不過如果做下軟連接,我相信能解決問題。

先對原來的/usr/bin下的gcc做下備份:

$ cd /usr/bin/
$ sudo mv gcc gcc_bak
$ sudo ln -s /usr/local/bin/gcc gcc

繼續:

$ ./configure
$ sudo make

然后報了類似這樣的錯誤:

/opt/local/bin/gcc-mp-4.8 -c -I. -Iproto -DHAVE_CONFIG_H   -I/usr/local/include  -g -O2 -D_FORTIFY_SOURCE=1       -o objects/buffer.o buffer.c
In file included from vim.h:302:0,
                 from buffer.c:28:
auto/osdef.h:18:12: error: conflicting types for 'printf'
 extern int printf __ARGS((char *, ...));

google之后,只發現了一個日文網頁,而且說得好像不是一個問題,靈機一動下,make clean了一下,然后make就通過了,接着

$ sudo make install

執行下vim:

$ vim
-bash: /usr/bin/vim: No such file or directory

在編譯日志里面找了找,感覺vim應該是在/usr/local/bin/vim:

$ /usr/local/bin/vim --version
VIM - Vi IMproved 8.1 (2018 May 17, compiled May 28 2018 15:26:31)
Included patches: 1-22...

果然在這里,做下軟連接:
$ sudo ln -s /usr/local/bin/vim /usr/bin/vim

OK,大功告成,手動編譯vim8.1搞定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM