1.Linuxä¸ç./configure
2.世界上最长的码安源代码
3.GNU Emacs安装指南
4.为什么没有开箱即用的emacs的整合包呢?
5.Windows 10 在WSL环境下使用Linux图形软件 (适用Vim,Emacs等)
Linuxä¸ç./configure
Linuxç¯å¢ä¸ç软件å®è£ ï¼å¹¶ä¸æ¯ä¸ä»¶å®¹æçäºæ ï¼å¦æéè¿æºä»£ç ç¼è¯åå¨å®è£ ï¼å½ç¶äºæ å°±æ´ä¸ºå¤æä¸äºï¼ç°å¨å®è£ åç§è½¯ä»¶çæç¨é½é常æ®éï¼ä½ä¸åä¸ç¦»å ¶ä¸ï¼å¯¹åºç¡ç¥è¯çæå®ææ¡ï¼å®è£ åç§è½¯ä»¶çé®é¢å°±è¿åè解äºãConfigureèæ¬é ç½®å·¥å ·å°±æ¯åºç¡ä¹ä¸ï¼å®æ¯autoconfçå·¥å ·çåºæ¬åºç¨ã
ä¸ä¸äºæå·§ç¸æ¯ï¼Configureæ¾å¾åºç¡ä¸äºï¼å½ç¶ä½¿ç¨åå¦ä¹ èµ·æ¥å°±æ¾å¾æ¯ç¥ä¹å³ä¸äºï¼å½ç¶è¦æ为é«æï¼å¯¹åºç¡ççæä¸è½è¶ è¶å¦ã
为æ¤æ转载äºä¸ç¯å ³äºConfigureé项é ç½®ç详ç»ä»ç»ãä¾å¤§å®¶åè
'configure'èæ¬æ大éçå½ä»¤è¡é项ã对ä¸åç软件å æ¥è¯´ï¼è¿äºé项å¯è½ä¼æååï¼ä½æ¯è®¸å¤åºæ¬çé项æ¯ä¸ä¼æ¹åçã带ä¸'--help'é项æ§è¡'configure'èæ¬å¯ä»¥çå°å¯ç¨çææé项ã尽管许å¤é项æ¯å¾å°ç¨å°çï¼ä½æ¯å½ä½ 为äºç¹æ®çéæ±èconfigureä¸ä¸ªå æ¶ï¼ç¥éä»ä»¬çåå¨æ¯å¾æçå¤çãä¸é¢å¯¹æ¯ä¸ä¸ªé项è¿è¡ç®ç¥çä»ç»ï¼
--cache-file=FILE
'configure'ä¼å¨ä½ çç³»ç»ä¸æµè¯åå¨çç¹æ§(æè bug!)ã为äºå ééåè¿è¡çé ç½®ï¼æµè¯çç»æä¼åå¨å¨ä¸ä¸ªcache fileéãå½configureä¸ä¸ªæ¯ä¸ªåæ éé½æ'configure'èæ¬çå¤æçæºç æ æ¶ï¼ä¸ä¸ªå¾å¥½çcache fileçåå¨ä¼æå¾å¤§å¸®å©ã
--help
è¾åºå¸®å©ä¿¡æ¯ãå³ä½¿æ¯æç»éªçç¨æ·ä¹å¶å°éè¦ä½¿ç¨ä½¿ç¨'--help'é项ï¼å 为ä¸ä¸ªå¤æç项ç®ä¼å å«éå çé项ãä¾å¦ï¼GCCå éç'configure'èæ¬å°±å å«äºå è®¸ä½ æ§å¶æ¯å¦çæåå¨GCCä¸ä½¿ç¨GNUæ±ç¼å¨çé项ã
--no-create
'configure'ä¸çä¸ä¸ªä¸»è¦å½æ°ä¼å¶ä½è¾åºæ件ãæ¤é项é»æ¢'configure'çæè¿ä¸ªæ件ãä½ å¯ä»¥è®¤ä¸ºè¿æ¯ä¸ç§æ¼ä¹ (dry run)ï¼å°½ç®¡ç¼å(cache)ä»ç¶è¢«æ¹åäºã
--quiet
--silent
å½'configure'è¿è¡ä»çæµè¯æ¶ï¼ä¼è¾åºç®è¦çä¿¡æ¯æ¥åè¯ç¨æ·æ£å¨ä½ä»ä¹ãè¿æ ·ä½æ¯å 为'configure'å¯è½ä¼æ¯è¾æ ¢ï¼æ²¡æè¿ç§è¾åºçè¯ç¨æ·å°ä¼è¢«æå¨ä¸æçææ£å¨åçä»ä¹ï¼ä½¿ç¨è¿ä¸¤ä¸ªé项ä¸çä»»ä½ä¸ä¸ªé½ä¼æä½ æå°ä¸æã(è¯æ³¨ï¼è¿ä¸¤å¥è¯æ¯è¾æææï¼åææ¯è¿æ ·çï¼If there was no such output,码安 the user would be left wondering what is happening. By using this option, you too can be left wondering!)
--version
æå°ç¨æ¥äº§ç'configure'èæ¬çAutoconfççæ¬å·ã
--prefix=PEWFIX
'--prefix'æ¯æ常ç¨çé项ãå¶ä½åºç'Makefile'ä¼æ¥çéæ¤éé¡¹ä¼ éçåæ°ï¼å½ä¸ä¸ªå å¨å®è£ æ¶å¯ä»¥å½»åºçéæ°å®ç½®ä»çç»æç¬ç«é¨åã举ä¸ä¸ªä¾åï¼å½å®è£ ä¸ä¸ªå ï¼ä¾å¦è¯´Emacsï¼ä¸é¢çå½ä»¤å°ä¼ä½¿Emacs Lisp file被å®è£ å°"/opt/gnu/share"ï¼
$ ./configure --prefix=/opt/gnu
--exec-prefix=EPREFIX
ä¸'--prefix'é项类似ï¼ä½æ¯ä»æ¯ç¨æ¥è®¾ç½®ç»æåèµçæ件çå®è£ ä½ç½®ï¼ç¼è¯å¥½ç'emacs'äºè¿å¶æ件就æ¯è¿æ ·ä¸ä¸ªé®ä»¶ãå¦æ没æ设置è¿ä¸ªé项çè¯ï¼é»è®¤ä½¿ç¨çé项å¼å°è¢«è®¾ä¸ºå'--prefix'é项å¼ä¸æ ·ã
--bindir=DIR
æå®äºè¿å¶æ件çå®è£ ä½ç½®ï¼è¿éçäºè¿å¶æ件å®ä¹ä¸ºå¯ä»¥è¢«ç¨æ·ç´æ¥æ§è¡çç¨åºã
--sbindir=DIR
æå®è¶ 级äºè¿å¶æ件çå®è£ ä½ç½®ãè¿æ¯ä¸äºé常åªè½ç±è¶ 级ç¨æ·æ§è¡çç¨åºã
--libexecdir=DIR
æå®å¯æ§è¡æ¯ææ件çå®è£ ä½ç½®ãä¸äºè¿å¶æ件ç¸åï¼è¿äºæ件ä»æ¥ä¸ç´æ¥ç±ç¨æ·æ§è¡ï¼ä½æ¯å¯ä»¥è¢«ä¸é¢æå°çäºè¿å¶æ件ææ§è¡ã
--datadir=DIR
æå®éç¨æ°æ®æ件çå®è£ ä½ç½®ã
--sysconfdir=DIR
æå®å¨å个æºå¨ä¸ä½¿ç¨çåªè¯»æ°æ®çå®è£ ä½ç½®ã
--sharedstatedir=DIR
æå®å¯ä»¥å¨å¤ä¸ªæºå¨ä¸å ±äº«çå¯åæ°æ®çå®è£ ä½ç½®ã
--localstatedir=DIR
æå®åªè½åæºä½¿ç¨çå¯åæ°æ®çå®è£ ä½ç½®ã
--libdir=DIR
æå®åºæ件çå®è£ ä½ç½®ã
--includedir=DIR
æå®C头æ件çå®è£ ä½ç½®ãå ¶ä»è¯è¨å¦C++ç头æ件ä¹å¯ä»¥ä½¿ç¨æ¤é项ã
--oldincludedir=DIR
æå®ä¸ºé¤GCCå¤ç¼è¯å¨å®è£ çC头æ件çå®è£ ä½ç½®ã
--infodir=DIR
æå®Infoæ ¼å¼ææ¡£çå®è£ ä½ç½®.Infoæ¯è¢«GNUå·¥ç¨æ使ç¨çææ¡£æ ¼å¼ã
--mandir=DIR
æå®æå页çå®è£ ä½ç½®ã
--srcdir=DIR
è¿ä¸ªé项对å®è£ 没æä½ç¨ï¼ä»ä¼åè¯'configure'æºç çä½ç½®ãä¸è¬æ¥è¯´ä¸ç¨æå®æ¤é项ï¼å 为'configure'èæ¬ä¸è¬åæºç æ件å¨åä¸ä¸ªç®å½ä¸ã
--program-prefix=PREFIX
æå®å°è¢«å å°æå®è£ ç¨åºçååä¸çåç¼ãä¾å¦ï¼ä½¿ç¨'--program-prefix=g'æ¥configureä¸ä¸ªå为'tar'çç¨åºå°ä¼ä½¿å®è£ çç¨åºè¢«å½å为'gtar'ãå½åå ¶ä»çå®è£ é项ä¸èµ·ä½¿ç¨æ¶ï¼è¿ä¸ªé项åªæå½ä»è¢«`Makefile.in'æ件使ç¨æ¶æä¼å·¥ä½ã
--program-suffix=SUFFIX
æå®å°è¢«å å°æå®è£ ç¨åºçååä¸çåç¼ã
--program-transform-name=PROGRAM
è¿éçPROGRAMæ¯ä¸ä¸ªsedèæ¬ãå½ä¸ä¸ªç¨åºè¢«å®è£ æ¶ï¼ä»çååå°ç»è¿`sed -e PROGRAM'æ¥äº§çå®è£ çååã
--build=BUILD
æå®è½¯ä»¶å å®è£ çç³»ç»å¹³å°ãå¦æ没ææå®ï¼é»è®¤å¼å°æ¯'--host'é项çå¼ã
--host=HOST
æå®è½¯ä»¶è¿è¡çç³»ç»å¹³å°ãå¦æ没ææå®ãå°ä¼è¿è¡`config.guess'æ¥æ£æµã
--target=GARGET
æå®è½¯ä»¶é¢å(target to)çç³»ç»å¹³å°ãè¿ä¸»è¦å¨ç¨åºè¯è¨å·¥å ·å¦ç¼è¯å¨åæ±ç¼å¨ä¸ä¸æä¸èµ·ä½ç¨ãå¦æ没ææå®ï¼é»è®¤å°ä½¿ç¨'--host'é项çå¼ã
--disable-FEATURE
ä¸äºè½¯ä»¶å å¯ä»¥éæ©è¿ä¸ªé项æ¥æä¾ä¸ºå¤§åé项çç¼è¯æ¶é ç½®ï¼ä¾å¦ä½¿ç¨Kerberos认è¯ç³»ç»æè ä¸ä¸ªå®éªæ§çç¼è¯å¨æä¼é ç½®ãå¦æé»è®¤æ¯æä¾è¿äºç¹æ§ï¼å¯ä»¥ä½¿ç¨'--disable-FEATURE'æ¥ç¦ç¨å®ï¼è¿é'FEATURE'æ¯ç¹æ§çååï¼ä¾å¦ï¼
$ ./configure --disable-gui
-enable-FEATURE[=ARG]
ç¸åçï¼ä¸äºè½¯ä»¶å å¯è½æä¾äºä¸äºé»è®¤è¢«ç¦æ¢çç¹æ§,å¯ä»¥ä½¿ç¨'--enable-FEATURE'æ¥èµ·ç¨å®ãè¿é'FEATURE'æ¯ç¹æ§çååãä¸ä¸ªç¹æ§å¯è½ä¼æ¥åä¸ä¸ªå¯éçåæ°ãä¾å¦ï¼
$ ./configure --enable-buffers=
`--enable-FEATURE=no'ä¸ä¸é¢æå°ç'--disable-FEATURE'æ¯åä¹çã
--with-PACKAGE[=ARG]
å¨èªç±è½¯ä»¶ç¤¾åºéï¼æ使ç¨å·²æ软件å ååºçä¼ç§ä¼ ç»ãå½ç¨'configure'æ¥é ç½®ä¸ä¸ªæºç æ æ¶ï¼å¯ä»¥æä¾å ¶ä»å·²ç»å®è£ ç软件å çä¿¡æ¯ãä¾å¦ï¼åèµäºTclåTkçBLTå¨ä»¶å·¥å ·å ãè¦é ç½®BLTï¼å¯è½éè¦ç»'configure'æä¾ä¸äºå ³äºæ们æTclåTkè£ çä½å¤çä¿¡æ¯ï¼
$ ./configure --with-tcl=/usr/local --with-tk=/usr/local
'--with-PACKAGE=no'ä¸ä¸é¢å°æå°ç'--without-PACKAGE'æ¯åä¹çã
--without-PACKAGE
ææ¶åä½ å¯è½ä¸æ³è®©ä½ ç软件å ä¸ç³»ç»å·²æç软件å 交äºãä¾å¦ï¼ä½ å¯è½ä¸æ³è®©ä½ çæ°ç¼è¯å¨ä½¿ç¨GNU ldãéè¿ä½¿ç¨è¿ä¸ªé项å¯ä»¥åå°è¿ä¸ç¹ï¼
$ ./configure --without-gnu-ld
--x-includes=DIR
è¿ä¸ªé项æ¯'--with-PACKAGE'é项çä¸ä¸ªç¹ä¾ãå¨Autoconfæå被å¼ååºæ¥æ¶ï¼æµè¡ä½¿ç¨'configure'æ¥ä½ä¸ºImakeçä¸ä¸ªåéæ¹æ³æ¥å¶ä½è¿è¡äºXç软件ã'--x-includes'é项æä¾äºå'configure'èæ¬ææå å«X头æ件çç®å½çæ¹æ³ã
--x-libraries=DIR
类似çï¼'--x-libraries'é项æä¾äºå'configure'èæ¬ææå å«Xåºçç®å½çæ¹æ³ã
å¨æºç æ ä¸è¿è¡'configure'æ¯ä¸å¿ è¦çåæ¶ä¹æ¯ä¸å¥½çãä¸ä¸ªç±'configure'产ççè¯å¥½ç'Makefile'å¯ä»¥æçæºç å±äºå¦ä¸æ£µæ ç软件å ãå¨ä¸ä¸ªç¬ç«äºæºç çæ ä¸æçæ´¾ççæ件ç好å¤æ¯å¾ææ¾çï¼æ´¾ççæ件ï¼å¦ç®æ æ件ï¼ä¼åä¹±çæ£å¸äºæºç æ ãè¿ä¹ä½¿å¨å¦ä¸ä¸ªä¸åçç³»ç»æç¨ä¸åçé ç½®é项æçåæ ·çç®æ æ件é常å°é¾ã建议使ç¨ä¸æ£µæ ï¼ä¸æ£µæºç æ (source tree)ï¼ä¸æ£µæçæ (build tree)ï¼ä¸æ£µå®è£ æ (install tree)ãè¿éæä¸ä¸ªå¾æ¥è¿çä¾åï¼æ¯ä½¿ç¨è¿ç§æ¹æ³æ¥æçGNU mallocå ï¼
$ gtar zxf mmalloc-1.0.tar.gz
$ mkdir build && cd build
$ ../mmalloc-1.0/configure
creating cache ./config.cache
checking for gcc... gcc
checking whether the C compiler (gcc ) works... yes
checking whether the C compiler (gcc ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for a BSD compatible install... /usr/bin/install -c
checking host system type... i-pc-linux-gnu
checking build system type... i-pc-linux-gnu
checking for ar... ar
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
checking for unistd.h... yes
checking for getpagesize... yes
checking for working mmap... yes
checking for limits.h... yes
checking for stddef.h... yes
updating cache ../config.cache
creating ./config.status
è¿æ ·è¿æ£µæçæ 就被é ç½®äºï¼ä¸é¢å¯ä»¥ç»§ç»æçåå®è£ è¿ä¸ªå å°é»è®¤çä½ç½®'/usr/local'ï¼
$ make all && make install
世界上最长的源代码
我现在可以给你写出世界上最长的代码啊!请看:
#include <iostream.h>
void main()
{
cout<<"the longest code in the world!"<<endl;
cout<<"the longest code in the world!"<<endl;
cout<<"the longest code in the world!"<<endl;
cout<<"the longest code in the world!"<<endl;
cout<<"the longest code in the world!"<<endl;
cout<<"the longest code in the world!"<<endl;//以下重复...次
}
GNU Emacs安装指南
此文件包含有关构建 GNU Emacs 的一般信息。在大多数 Unix 系统上,码安构建 Emacs 时,码安首先需要运行 'configure' shell 脚本。码安它会尝试推导出各种系统依赖的码安易语言短信源码变量和功能的正确值,并找到保存某些系统头文件和库的码安目录。在少数情况下,码安你可能需要明确告诉 configure 在哪里找到某些东西,码安或者使用什么选项。码安
configure 在几个子目录下创建了一个 'Makefile',码安以及一个包含系统相关定义的码安 'src/config.h' 文件。随后,码安运行 'make' 工具,码安并为你的码安系统构建软件包。
构建 Emacs 需要 GNU make,这是在 Emacs 支持的大多数系统上默认的 'make' 程序。
在构建 Emacs 的步骤中,首先获取并解压 Emacs 发行版,使用类似这样的布林带宽指标源码命令,其中 VERSION 是 Emacs 版本号。然后 cd 到解压 Emacs 的目录并调用 'configure' 脚本。如果在源代码目录之外创建了一个单独的目录,在那里构建 Emacs 并从那里调用 'configure',也是可行的。
在 'configure' 完成后,它会打印出关于系统配置的几行细节。仔细阅读这些细节,寻找任何可疑之处,如错误的 CPU 和操作系统名称、错误的头文件或库的位置,或缺少你知道已安装在系统上的库等。如果你发现有什么不对,你可能需要传递给 'configure' 一个或多个选项,指定明确的机器配置名称、在何处找到各种头文件和库等。请参考详细的构建和安装部分以获取帮助。
如果 'configure' 没有找到一些图像支持库,如 Xpm 和 jpeg,分答 付费问答 源码请参考图像支持库部分。如果 'configure' 打印的详细信息对您没有任何意义,但没有明显错误,通常可以假设 'configure' 已完成其工作并继续。
调用 "make" 程序,如果 'make' 成功,它会在 'src' 目录下建立一个可执行程序 'emacs'。你可以尝试这个程序,以确保它能正常工作。为了进一步测试 Emacs,主要是为了帮助开发者。
假设程序 'src/emacs' 启动并显示其开始屏幕,你可以将程序及其辅助文件安装到其安装目录中。你现在已经准备好使用 Emacs 了。如果你想节省空间,可以从构建 Emacs 的目录中删除程序二进制文件和对象文件。如果你不打算再次构建 Emacs,可以删除整个构建目录,但保留它对调试很有用。响应式网站源码下载
如果你想用不同的配置选项再次构建 Emacs,首先要清理源代码目录。请记住,安装程序会自动压缩(只要你有 'gzip' 程序)那些已安装的并有相应 .elc 版本的 Lisp 源代码(.el)文件以及信息文件,以节省空间。
你可以阅读有关常见 make 目标的简短摘要。对于需要复杂文本布局支持的系统,如印度语和高棉语,以及需要阿拉伯语整形支持的脚本(阿拉伯语和波斯语),Emacs 需要可选的库来正确显示。如果安装了 HarfBuzz 库,Emacs 就会用它来构建并使用它来实现这一目的。在 GNU/Linux 和 Posix 系统上,HarfBuzz 是首选的整形引擎。
在某些系统上,特别是 GNU/Linux,其他支持复杂脚本显示的库,如 'mn-db'、'libmn-flt' 和 'libotf',部落战争手游源码可能已经存在或作为额外的软件包提供。在 MS-Windows 上,如果 HarfBuzz 不可用,Emacs 将使用作为操作系统一部分的 Uniscribe 整形引擎。
Emacs 需要库来显示图像,但 PBM 和 XBM 图像除外,它们的支持是内置的。在某些系统上,特别是 GNU/Linux,这些库可能已经存在或作为额外的包提供。在 FreeBSD 上,命令是 'pkg install -ypkg rquery %dn emacs-devel'。
额外的字体通常不包含在 Emacs 发行版中,也不进行安装。在 GNU 系统上,Emacs 同时支持 X 字体和本地字体(即由 fontconfig 库管理的字体)。如果你需要比你的发行版通常提供的更多字体,你必须自己安装它们。在 GNU/Linux 系统上,有许多免费的 Unicode 字体可供选择。
许多 GNU/Linux 系统默认不附带开发包,这些包包含了你运行 Emacs 所需的文件,但不包括你编译它所需的文件。例如,要编译支持 X 和图形库的 Emacs,你可能需要安装 X 开发包以及 jpeg、png 等包的开发版本。
在 FreeBSD 上,命令是 'pkg install -ypkg rquery %dn emacs-devel'。'configure' 调用提供了关于如何为特定系统配置 Emacs 的详细信息。在完成配置后,'configure' 会打印它所做的事情的描述并创建一个 shell 脚本 'config.status',它在运行时重新创建相同的配置。
在构建和安装过程中,有许多额外的选项和变量可供使用,以自定义 Emacs 的安装位置、文件结构等。例如,你可以通过在 'make' 命令行中指定变量值来改变安装 Emacs 及其数据文件的位置。
为什么没有开箱即用的emacs的整合包呢?
emacs是一种非常强大的存在,但回想自己入门emacs是一个相当痛苦的过程,在不同的机器上,配置我所习惯的emacs环境得花掉我1天的时间。类比linux,源码开始LFS使用linux是非常痛苦的过程,但是像fedora、ubuntu这样的发行版,让普通人,初学者快速入门使用了linux。问下,是否存在emacs的发行版,例如整合了完成某项工作的一个最佳实践的工具集和一个使用习惯的开箱即用的emacs发行包呢?类比eclipse,存在针对JavaScript的有Aptana;针对rails的有RadRails;真对PHP的有Zend Studio;真对java的有MyEclipse;
Windows 在WSL环境下使用Linux图形软件 (适用Vim,Emacs等)
在Windows 中体验Linux图形软件,特别是对于那些偏爱GNU工具如Vim、Emacs的开发者来说,可能会遇到与Windows不兼容的问题。我曾尝试过多种解决方案,但效果并不理想。然而,如果你希望在Windows系统中获得接近原生Linux开发环境,这篇文章或许能帮到你。
首先,我们需要配置Windows Subsystem for Linux (WSL),开启相关服务。你可以通过Cortana搜索并启用WSL特性。接着,安装Ubuntu,设置好后启动,建议选择与Ubuntu版本匹配的镜像源以避免后续问题。
为了在WSL环境中显示图形界面,MobaXterm是不错的选择,它内置了Xserver。记得在使用前确保MobaXterm运行且Xserver开启。默认情况下,MobaXterm可能不允许直接复制Windows剪贴板内容,需要在设置中调整。
推荐使用wsl-terminal,它简化了在WSL中使用终端应用程序的过程。只需通过右键菜单添加功能,比如添加与Emacs的启动快捷方式。同时,还可以更改颜色主题,使其更易读。
对于中文支持,需要导入Windows字体、安装输入法(如谷歌拼音),并调整环境变量和输入法快捷键。记得确保WSL在开机时自动启动相关服务,如dbus和fcitx。
安装Emacs时,可以选择编译源码或通过apt-get安装。这样,你就可以根据需要配置其他应用,只是可能需要安装额外的依赖。
尽管wsl-terminal在默认情况下可能与zsh不兼容,但通过修改配置文件,可以轻松解决这个问题。最后,对于WSL的管理,你可以通过cmd或PowerShell运行相关命令,如wsl、bash或Linux系统名称,来直接操作你的Linux环境。
希望这些步骤能帮助你在Windows 的WSL环境中顺利使用Linux图形软件。如果你遇到任何问题,随时可以尝试解决或重置子系统。