Wednesday, May 20, 2009

Emacs用户手册中文版 zz

译者: con Copyright (c) 1985 Free Software Foundation, Inc; See end for conditions.
You are looking at the Emacs tutorial.

Emacs 的命令通常包括控制键(就是上面标有 Ctrl或Ctl的那个)或者是META键(上面标有ED99v或ALT)。为了方便起见我们将用下面的缩写来代替这些键的全称:

C- 意思是当敲入字符 时同时按住控制键,因此,C-f表 示:按住控制键并且按 f 。 M- 表示当键入 时按住META或ALT或ED99v键。如果没有META 或ALT或ED99v键,则用ESC键代替。 表示ESC键

注意:退出Emacs,按C-x C-c(两个字符)。在文本左边区域的“>>”符号表示让你试着使用一个命令。比如:
>> 现在键入C-v(观看下一屏)移动到下一屏。(就象前面说的,按v的同时也按住控制键)。从现在开始,每当你读完一屏的时候都可以用它来翻屏。
注意在翻屏后会保留上屏的最后一行;这是为你继续阅读文本提供某些连贯性。
你所需要知道的第一件事是如何把光标从一个地方移动到另一个地方。你已经知道了如何向前翻一屏--用 C-v。要向后翻一屏,键入M-v。
>> 试着键入 M-v 和 C-v 几次。
* 摘要(SUMMARY)
---------------------------
下面几个命令对整屏观看时有用:

C-v 向前翻一整屏。
M-v 向后翻一整屏。
C-l 清除屏幕并重新显示所有的文本,然后把光标移动到屏幕的中央。 (注意是Control-L,而不是 Control-1)。
>> 寻找光标,并且注意它在文本里的位置。然后键入C-l。再寻找光标你会注意到光标现在会出现在同样的文本附近。
* 基本光标控制(BASIC CURSOR CONTROL)
-----------------------------------------------------------------
整屏整屏的移动是很有用的,可是如何把光标移动到屏幕上文本里的一个指定的地方呢?
有好几个方法可以实现。最基本的方法是用命令 C-p,C-b,C-f,和C-n。这些命令每个都使光标在屏幕上往特定的方向移动一行或者一列。下面是一个图表显示了这四个命令和它们所移动的方向:


上一行,C-p
:
:
向前,C-b ...... 当前光标的位置 ...... 向后,C-f
:
:
下一行,C-n
>> 用C-n或C-p把光标移动到图表中间。然后键入C-l会看到整个图表出现在屏幕的中央。



你也许会发现这些字母很容易记住:P 代表上面的(previous),N 代表下一个 (next),B 代表向前(backward),F 代表向后(forward)。这些是基本的光标位置命令,你将经常会用到它们。所以现在学习它们很有好处。


>> 用几次 C-n 把光标向下移动到这一行。

>> 用 C-f 把光标移动到行里,再用C-p把光标上移。观察当光标在行的中间时 C-p做了些什么。
每一个文本行都以一个换行符结尾,它用来当作行与行之间的分格。你的文件的最后一行的尾部应该有一个换行符(但Emacs并不要求一定要有一个)。
>> 试着在行的开头使用C-b。它将会把光标移到上一行的末尾。这是因为它向后移的时候穿过了换行符。
C-f 也能象 C-b一样穿过换行符。
>> 使用几次C-b,使您能知道光标在哪。然后用C-f移动到行的末尾。然后再用一次C-f,使光标移动到下一行。

当你移动超过屏幕的顶部或底部,光标回移动到下一屏的中间,这叫做“滚屏 (scrolling)”。它使得Emacs滚屏移动到文本上指定的部位而不是移出屏幕。

>> 试着用C-n把光标移过屏幕的底部,看看回发生什么。

如果觉得一个一个字符的移动太缓慢,可以一个单词一个单词的移动。M-f(Meta-f) 向前移一个单词,M-b向后移一个单词。
>> 键入几个M-f和M-b。

当光标在一个单词的中间,M-f移动到单词的末尾。当光标在两个单词间的空白部分 M-f移动到后一个单词的末尾。M-b与M-f一样,只是移动的方向相反。
>> 键入M-f和M-b几次,中间穿插一些C-f和C-b以使你能观察到M-f和M-b在单词中和单词间的不同行为。

注意比较C-f,C-b与M-f,M-b。通常情况下Meta键用于有关语言单位(词,句,段落) 的操作;而控制键用于编辑时的基本单位(字符,行等)。
这是句与行的比较:C-a和C-e移动到一行的开头和末尾,M-a和M-e移动到一个句子的开头和末尾。
>> 键入一对C-a,再键入一对C-e。 键入一对M-a,再键入一对M-e。

你会看到重复键入的C-a什么也不做,而重复键入的M-a则会移动一个以上的句子。
光标在文本中的位置也叫“点(point)”。在段落里,光标标示出了点在屏幕上文本里的位置。
下面是简单的光标移动命令的总结,包括单词和句子的移动命令:

C-f 向前移动一个字符。
C-b 向后移动一个字符。

M-f 向前移动一个单词。
M-b 向后移动一个单词。

C-n 移动到下一行。
C-p 移动到上一行。

C-a 移动到行首。
C-e 移动到行尾。

M-a 向前移动到句子的开头。
M-e 向后移动到句子的末尾。

>> 试着对每一个命令都实践几次,它们都是经常要用到的命令。
另外两个重要的光标移动命令是M-<(Meta小于),它移动光标到整个文本的开头,M-> (Meta大于)它移动光标到整个文本的末尾。
在多数终端上,“<”在逗号的上面,所以你必须用Shift键来输入它。在这些终端上,你也必须用Shift键来输入M-<;没有Shift键,你可以输入M-逗号。 >> 现在就试试M-<,移动到本教程的开头,然后再用C-v移回这里。 现在就试试M->,移动到本教程的末尾,然后再用M-v移回这里。

你也可以用方向键来移动光标,如果你的终端有方向键的话。我们建议学习C-b, C-f,C-n和C-p有三个原因。第一,它们能在所有类型的终端上工作。第二,你获得了使用Emacs的锻炼,你将会发现输入这些CTRL加字符比按方向键要快(因为你不必把你的手从键盘上移开)。第三,一旦你养成了使用这些CTRL加字符的命令的习惯,你就能一样容易的学习其他高级的光标移动命令。
大多数Emacs命令接收一个数字参数;对大多数命令来说,这表示命令重复的次数。输入重复命令次数的方法是在输入命令之前按C-u和数字。如果你有 META(或ED99v或 ALT)键,则有另一种方法输入数字参数:在按住META键的时候输入数字,我们建议学习C-u方法,因为它能在任何终端上工作。
例如,C-u 8 C-f 向前移动8个字符。
>> 试着使用带数字参数的C-n或C-p,只用一个命令就把光标移动到与本行相邻的 行上。

绝大多数命令把数字参数当作重复次数,但也有几个例外。C-v和M-v就是。当给出一个参数,只是上滚或下滚数字指定的行数而不是屏数。比如,C-u 4 C-v滚动4行屏幕。


>> 现在试试 C-u 8 C-v。
这将使屏幕滚动8行,如果你想往回滚动的话,键入一个带参数的M-v。
如果你正在使用X窗口,在Emacs窗口的左手边有一个叫做滚动条的矩形区域。你能通过用鼠标点击滚动条来滚动文本。
>> 试着在滚动条顶部的高亮区域点击中键。这将使文本滚动,滚动的位置取决于 你点击的长短。

>> 试着按住鼠标中键上移或下移鼠标,你将看到当你移动鼠标时文本会上下滚动。
* 当EMACS挂起时(WHEN EMACS IS HUNG)
------------------------------------------------------------------
当Emacs停止响应你的命令时,你能用C-g把它安全的停止。当一个命令执行了太长的时间时你可以用C-g把它终止。
你也可以用C-g来取消数字参数和输入后又不想执行的命令。
>> 键入C-u 100 产生一个值为100的数字参数,然后按C-g。再按C-f。它只会移动 一个字符,因为你用C-g取消了参数。


如果错误的输入了一个 ,你能用C-g消掉它。
* 禁止命令(DISABLED COMMAND)
----------------------------------------------------
一些Emacs命令是“禁止”的,所以新手不会因偶然而执行它。
如果你键入了一个禁止命令,Emacs会显示一条消息说明这条命令是干什么的,并且问你是否需要执行它。
如果你真的想要执行,敲空格键继续。通常,如果你不想执行禁止命令,用“n”来回答。

>> 输入 :(一条禁止命令),然后用n来回答。

* 窗口(WINDOWS)
-----------------------------
Emacs 能有好几个窗口,每一个显示自己的文本。我们将在后面解释怎样对多窗口操作。现在我们要解释怎样去除多余的窗口屏回到基本的单窗口编辑状态。这是一个例子:
C-x 1 一个窗口(也就是除去其他所有的窗口)。
因为Control-x跟了数字1。C-x 1使包含光标的窗口占满整个屏幕,屏删除其他所有窗口。
>> 把光标移动本行并输入 C-u 0 C-l。
>> 键入Control-h k Control-f。 看这个窗口如何缩小,并在按Control-f的时候出现了一个新的文档窗口。
>> 键入C-x 1 并且看到那个文档窗口消失了。

* 插入和删除(INSERTING AND DELETING)
---------------------------------------------------------------
如果你要插入文本,只须输入文本。输入的字符你能见到,比如A,7,*等等。Emacs 会立即把它们插入。键入 (回车键)插入一个换行符。
你能用 删除你输入的最后一个字符。 就是键盘上标着“Del”的键。在某些情况下,“Backspace”键作用和 一样,但不总是这样!


通常, 立即删除光标前面的那个字符。


>> 输入几个字符,然后用 删除它们。不必担心这个文件回被改变;你不会 替换主教程。这只是你的个人拷贝。

当一行文本太长而超过屏幕宽度时,这一行会在屏幕的下一行被“继续”。文本的右边会有一个反斜杠“”表示它被继续。
>> 插入文本直到最右边,然后再插入。你将看到一个继续了的行。
>> 使用 删除文本直到行的长度在屏幕的宽度以内。继续的行将会消失。

你能像删除其他任何字符一样删除换行符。删除两个行间的换行符会使它们合并为一行。如果这一行很长屏幕显示不下的话,将会用一个继续的行来表示。
>> 把光标移动到一行的开头按 这将使本行和上一行合为一行。
>> 按 重新插入你删除的换行符。

记住大多数的Emacs命令能接收一个重复次数。这包括文本字符,把一个文本字符重复的插入几次。
>> 键入这个-- C-u 8 * 来插入 ********

你现在已经学习了Emacs的大多数输入和排错的方法。你也能一样的删除单词或行。这是删除操作的摘要:
删除光标前面的字符
C-d 删除光标后面的字符
M- 除去光标前面的单词
M-d 除去光标后面的单词
C-k 除去从光标位置到行尾的内容
M-k 除去到当前句子的末尾
注意比较 ,C-d与M ,M-d和C-f,M-f( 不是一个控制字符,但不用担心)。C-k和M-k就象C-e,M-e。
当你一次除去不止一个字符时,Emacs将保存着这些文本,所以你可以恢复它们。恢复那些被除去的文本称作“拉(yanking)”。你能在除去文本的同一地方拉回它们,或是在文本的其他地方。你能对文本拉上几次以产生它们的多个拷贝,拉的命令是 C-y。
注意“除去(killing)”与“删除(Deleting)”之间的区别,被除去的东西能被拉回来,而被删除的不能。通常除去能除去很多的文本屏保存,而删除只能除去一个字符,或是空行或空格,并且不保存。


>> 把光标移到一个空行的开头,键入C-k除去这一行。
>> 按第二次C-k,你将看到剩下的空行也被除去了。



注意单个的C-k除去行的内容,第二个C-k除去行本身,并且使后面的所有行上移。特别要注意数字参数:它除去很多行和它们的内容,这不仅仅是重复。C-u 2 C-k 除去两行和它们剩下的空行;而按两次C-k并不会这样做。


要在当前光标处找回上次被除去的文本;按C-y


>> 试一试,用C-y把文本拉回来。



把C-y考虑为你把某人从你这里拿走的东西再拿回来。注意你如果在一行上按了几次 C-y,所有被除去的文本是存在一起的,所以按一次C-y将拉回全部的行。


>> 现在就试一下,按几次C-k。 现在找回被除去的文本;


>> 按C-y。然后把光标下移几行再按一次C-y,你现在会看到怎样拷贝这些文本。



当你要拉回一些被除去的文本该怎样做呢?C-y只能拉回最近被除去的文本。但以前的文本并没有消失。你能用M-y来恢复它。当你用C-y拉回最近被除去的文本后,换成 M-y可以拉回以前被除去的文本。键入一次又一次的M-y可以拉回更早以前被除去的文本。当你找到要寻找的文本,不必做任何事来保持它,只须离开拉文本的地方继续你的编辑。


如果你M-y了足够多的次数,你会回到开始点(最近被除去的)。


>> 除掉一行,移开,再除掉另一行。 然后用C-y拉回第二行。 然后换成M-y拉回被除掉的第一行。 再按一次M-y看看得到了什么。继续按直到拉回被除去的第二行;然后再做几次。 如果原意的话,你可以给M-y加正的或负的数字参数。


* 撤销(UNDO)
--------------------


如果你对文本作了一些改动,然后又发现这样做是错误的,你能用撤销命令,C-x u 撤销这些改变。

通常,一次C-x u撤销一个改变;如果你在一行上重复几次C-x u,就会重复几次撤销操作。

但有两个例外:不改变文本的操作(包括光标移动和滚屏命令)不算在内;只能处理20 次。


>> 用C-k除去这一行,然后按C-x u 它将重现出来。

C-_是一个可选择的撤销命令;它所作的工作和C-x u 完全一样,只是更容易输入。 C-_的缺点是有些键盘上没有它,这就是为什么还提供C-x u的原因。在某些终端上你可以按住CTRL的时候再敲/来输入C-_。C-_或C-x u把数参数字当作重复次数。

* 文件(FILES)
-------------------

为了永久保存你编辑的文本,你必须把它放到一个文件里。否则当你退出Emacs的时候它就会消失。你通过“查找(finding)”文件,把你编辑的内容放到文件里。(也称为 “访问(visiting)文件”)。


(译注:为了保持与原文的一致性,把find译为“查找”,但是这里和后面出现的 “查找文件”指的都是打开文件的意思。)


查找(finding)一个文件意味着你在Emacs里看文件的内容,在多数情况下,也就是你在编辑它。但是,你用Emacs对它作的改变并不是永久行的,除非你“保存(saving)” 它。所以你可以避免把一个改了一半的文件留在系统上。甚至你保存了文件,Emacs也会把原始文件换个名字保留下来,以防过后你发现对文件的改动是错误的。


如果你观察屏幕的你将看见一个开始和结尾都是破折号的行,并且以“--:**-- TUTORIAL”或之类的东西开始。屏幕的这部分通常显示你正在访问的文件的名字。现在,一个叫做“TUTORAL”的文件,它是你的Emacs教程的个人拷贝。当你用Emacs 查找一个文件,文件名会出现在同样的位置。


查找和保存文件命令不像前面学的那些命令。它们都以字符Control-x开始。以 Control-x起头的是一个完整的命令系列;它们中的许多都是对文件,缓冲,和相关的东西进行操作的。这些命令有两个,三个或四个字符长。


关于查找文件命令的另一件事是你必须给出你需要的文件的文件名。我们说这个命令 “从终端读取一个参数”。(在这种情况下,参数是文件的名字);当你键入命令C-x C-f后,Emacs会提示你输入文件的名字。你输入的文件名会出现在屏幕底部的行上。这个底部的行称为微型缓冲(minibuffer)用于这类较短的输入。你能用Emacs本身的编辑命令来编辑文件名。


当你正在输入文件名(或其他任何微型缓冲区输入),你能用命令C-g来取消。


>> 键入命令C-x C-f,然后输入C-g。这将取消微型缓冲,也取消了C-x C-f命令所使 用的微型缓冲,所以你不查找任何文件。



当你输完文件名后用 来结束。然后C-x C-f开始工作,并开始寻找你所选择的文件。当C-x C-f命令结束后微型缓冲区也消失了。


过一小会儿文件的内容就会显示在屏幕上,然后你就能对它进行编辑了。当想永久保留你的改动时用命令:


C-x C-s 保存文件(save the file)。


这个操作会把Emacs里的文本拷贝到文件里。在你第一次作的时候,Emacs把原始文 件改为一个新名字以使它不至于丢失。新名字是在原来名字的后面加一个“~”。


保存结束后,Emacs打印出被写的文件的文件名。你应当经常的保存,万一系统崩溃 的话你不至于丢失太多的工作。


>> 键入C-x C-s来保存你的教程的拷贝。屏幕的底部会打印出“Wrote.....TUTORIAL”。



注意:在某些系统上,输入C-x C-s 会把屏幕冻结住使你从Emacs看不到更多的输出。这表示这个操作系统的“特性”叫做“控制流程”,它拦截了C-x不让它到达Emacs那里。要使屏幕解冻,输入C-q,然后看Emacs手册里的“Spontaneous Entry to Incremental Search”一节,按上面的建议来对付这种“特性”。


你能查找一个已存在的文件,来查看它或编辑它。你也可以查找一个尚未存在的文件。这是 Emacs:里创建文件的方法:查找文件,将会出现一个空白,然后插入文件的文本。当你 “保存(saving)”的时候,Emacs将会用你插入的文本创建文件。从那时候起,你可以认为你在编辑一个存在的文件了。




* (缓冲)BUFFERS
--------------------------



如果你用C-x C-f查找第二个文件,第一个文件仍然留在Emacs里。你可以再用C-x C-f查找一次来切换回去。用这种方法你在Emacs里有很多文件。


>> 输入C-x C-f foo 来建立一个名为foo的文件。然后插入一些文本,编辑它,并 用C-x C-s来保存“foo”。 最后输入C-x C-f TUTORIAL 以回到本教程。




Emacs把每个文件的文本都保存在一个叫“缓冲(buffer)”的东西里。查找(打开)一个文件就会在Emacs里产生一个新的缓冲。要看你当前运行的Emacs里存在的缓冲列表,输入:


C-x C-b 列出缓冲(list buffers)


>> 输入 C-x C-b



观察每个缓冲都有一个名字,它可能也有一个它所保存的文件的文件名。一些缓冲不对应文件。比如,叫“*Buffers List*”的缓冲没有任何文件。这个缓冲只包含由C-x C-b产生的缓冲列表。你在Emacs窗口里看到的任何文本都是某个缓冲的一部分。



>> 输入 C-x 1 消除缓冲列表。



如果你对一个文件的文本作了改动,然后查找另一个文件,第一个文件并不保存。它的改变保存在Emacs里,在那个文件的缓冲里。被建立或编辑的第二个文件的缓冲并不影响第一个的。这一点很有用,但这也意味着要有一个便捷的方法来保存第一个文件的缓冲。如果要用 C-x C-f切换回去只是为了按C-x C-s保存它将会是一件令人讨厌的事。所以我们用


C-x s 保存缓冲(save the buffer)


C-x s 向你询问每个改动过但未存盘的缓冲,对每个这样的缓冲都询问是否保存。


>> 插入一行文本,然后按C-x s。 将会问你是否保存叫TUTORIAL的缓冲。 输入“y”来回答是。





* 扩展命令集(EXTENDING THE COMMAND SET)
-----------------------------------------------------------------------



有太多的Emacs命令,大大超过了Contorl和meta加上字符所能表示的数量。Emacs用X(扩展 eXtand)命令来解决这个问题。有两种风格:


C-x 字符扩展,后跟一个字符。
M-x 名字命令扩展,后跟一个长名字。


这些命令通常有用,但不如你已经学过的那些命令使用的频繁。你已经见过了它们中的两个:文件命令C-x C-f 用于查找和C-x C-s用于保存。


另一个例子是结束Emacs的命令C-x C-c(不必担心你所作的改动会丢失,在退出Emacs 之前,C-x C-c会提示你保存每一个改动过的文件)。


C-z命令用于*临时*退出Emacs,所以你能回到原来运行的Emacs里。在允许这样做的系统上,C-z把Emacs“挂起”;就是说回到外壳(shell)下,但并不破坏运行的Emacs。在大多数外壳上,你能用‘fg'命令或‘%emacs'来继续Emacs。


在不支持挂起的系统上,C-z建立一个子外壳(subshell)运行于Emacs下以使你能运行其他程序然后回到Emacs;这并不是真正的“退出” Emacs。在这种情况下,通常从子外壳回到Emacs的外壳命令是‘exit'。 有很多C-x 命令,这是已学过的一个列表:


C-x C-f 查找文件
C-x C-s 保存文件
C-x C-b 缓冲列表
C-x C-c 退出Emacs


C-x u 撤销操作


被称作扩展命令的命令的使用频率都不太高。或者是只在某些模式下使用。一个例子是替换字符串的命令,它在全文里把字符串替换为其他的。当你键入M-x, Emacs会在屏幕的底部提示你输入命令;在这种情况下,是“replace-string”。比如输入“repl s ”, Emacs会把命令补全。用 来结束命令。


替换字符串命令要求两个参数--要被替换的字符串和用来替换的字符串。你必须用 来结束两个参数。


>> 把光标移上两行,然后输入M-x repl s changed altered 。 注意现在这一行改变了:你把光标初始位置后的所有单词c-h-a-n-g-e-d替换为了 “altered”





* 自动保存(AUTO SAVE)
------------------------------------



当你改动了一个文件还未存盘的话,所作的改动也许会由于系统崩溃而丢失。为防止这种情况发生,Emacs在编辑时为每个文件提供了“自动保存(auto save)”。自动保存的文件的文件名前后都有一个#号;例如,如果你编辑的文件名叫“hello.c”,自动保存的文件的文件名就叫 “#hello.c#”。当你正常的保存了文件后,Emacs会删除这个自动保存的文件。如果遇到死机,你能打开那个文件后按M-x recover file 来恢复你的编辑,(是你编辑的文件而不是自动保存的文件)。当提示确认时,输入yes 来继续恢复自动保存的数据。




* 回显区域(ECHO AREA)
------------------------------------



如果Emacs发现你输入命令的速度很慢的话它会在屏幕底部为你显示出来,这个区域叫 “回显区域”。




* 模式行(MODE LINE)
---------------------------------



回显区域上面的一行称为“模式行(mode line)”。模式行显示与下面类似的东西:


--**-Emacs: TUTORIAL (Fundamental)--L670--58%----------------


这一行给出了有关你在编辑的文件和Emacs状态的有用信息。


你已经知道了文件名意味着什么。--NN%--指出你现在在文本里的位置;它意味着上面还有NN%的文本。如果是在文件的开头,会用--Top-- 来代替--0%--。如果是在行的末尾,会显示--Bot--。如果你正在看的文本内容很少,可以全部显示在屏幕上,模式行会说 --All--。


前面的星号表示你已经改动过文本了。一旦你保存了文件或打开了一个新文件,模式行的这部分就不是星号而是破折号了。


模式行上括号里的部分是现在的编辑模式。现在是缺省的基本(Fundamental)模式。它是 “主模式(major mode)”的一种。


Emacs有很多不同的主模式。有些意味着不同的语言或不同的文本。如Lisp模式(Lisp mode),文本模式(text mode)等等。在任何时候有且只能有一种主模式被激活。并且它的名字会出现在现在显示“Fundamental”的位置上。


每一个主模式都有些自己的命令。就象不同的编程语言的注释看起来不同一样。每种主模式插入的注释也不同。可以用扩展命令切换进某种主模式。例如,M-x fundamental-mode 是切换进基本模式。


>> 输入 M-x text-mode



不必担心,没有命令会给Emacs带来很大改变。但是你可以看到现在M-f和M-b把省略号当作单词的一部分。而先前,在基本模式里,M-f 和M-b把省略号当成当成分隔符。


主模式通常作诸如此类微小的变化:大多数命令在每个主模式里作“同样的工作”,但又有些微小的不同。


要观看关于你现在的主模式的文档,按C-h m。


>> 键入C-u C-v一次和多次使本行接近屏幕的顶端。
>> 输入C-h m ,看看文本模式和基本模式有些什么不同。
>> 按C-x 1 从屏幕上关掉这个文档。



主模式之所以叫做主模式是因为也存在从模式,从模式与主模式完全不同。每个从模式可以自己打开或者关闭,独立于所有其他从模式,也独立于你的主模式。所以你可以不用从模式或者同时用很多种从模式。


有一种从模式很有用,特别是在编辑英文文本时。它是自动填充模式(auto fill mode)。当这个模式打开的时候,当输入的文本过宽的时候就会自动折行。


你能用M-x auto-fill-mode 来打开自动填充模式。如果此模式已经打开M-x auto- fill-mode 则把它关闭。我们把这叫做切换开关。


>> 输入M-x auto-fill-mode 。然后插入一些“asdf”直到看到这行被分为两行。你必须在中间放一些空格,只有到空格的时候才会换行。



通常边界宽度是70,但你能用带数字参数的C-x f 命令来改变它。


>> 键入带参数20的C-x。(C-u 20 C-x f) 然后输入一些文本看现在每行只有20个字符了。然后用C-x f把它改回70。



如果你在一个段落的中间产生了改变,自动填充模式将不会重新填充。要想重新填充段落,当光标在段落里的时候按M-q。


>> 把光标移到上一段按 M-q。

* 搜索(SEARCHING)
-----------------------------

Emacs 能朝前和朝后搜索字符串(指相邻的一些字符或单词)。搜索是一个移动光标的操作,它把光标移动到字符串出现的下一个地方。


Emacs 的搜索命令和其他大多数编辑器不同,它是“增量式(incremental)”的,这意味着搜索在你键入字符串时就开始了。


开始一个向前搜索的命令是C-s,C-r是往回搜索。但等等,先别忙。


当你输入C-s是你将注意到在回显区域会出现一个字符串“I-search”。这告诉你Emacs开始了一个增量搜索,并在等待你输入要搜索的东西。 结束查询。


>> 现在键入C-s开始一个搜索。慢慢的输入单词‘cousor',在输入每一个字母的时候停顿一 下,注意看光标发生了什么。
>> 再输入一次C-s,来搜索“cursor”出现的下一个地方。
>> 现在输入 四次看看光标移到了哪里。
>> 输入 结束搜索。


看到发生什么了吗?在Emacs的增量搜索里,你输入多少字符串它就试着搜索这些字符出现的地方。到字符串出现的下一个地方,只须再按一次C-s。要搜索的字符串不存在的话,Emacs 会发出蜂鸣并告诉你当前的搜索“失败(failing)”,按 C-g 也是终止搜索。


注意:在某些系统上,输入 C-s 会把屏幕冻结住使你从Emacs看不到更多的输出。这表示这个操作系统的“特性”叫做“控制流程”,它拦截了C-s不让它到达Emacs那里。要使屏幕解冻,输入C-q,然后看Emacs手册里的“Spontaneous Entry to Incremental Search”一节,按上面的建议来对付这种“特性”。
如果你在搜索的过程里按了,你将注意到要搜索的字符串的最后一个字符会被删除并且光标会回到上一个被搜索到的地方。比如,假设你键入了“c”,将会搜索“c”第一次出现的地方。然后如果你键入“u”,光标将移到“ cu”第一次出现的地方。现在键入 。这将从搜索的字符串里把“u”删掉,这时光标回到“c”第一次出现的地方。


如果你在搜索时按了Control或meta键加字符(少数几个少数命令例外,如C-s和C-r),搜索将被终止。


C-s向当前光标的后面搜索字符串出现的地方。如果你需要搜索前面文本里的东西,用C-r来代替。我们所介绍的C-s的每个特性C-r也支持,除了方向相反。


* 多窗口(MULTIPLE WINDOWS)
------------------------------------------------


Emacs有一个非常好的特性是能同时在屏幕上显示不止一个的窗口。


>> 把光标移到本行上按C-u 0 C-l。


>> 现在按C-x 2,它把屏幕分裂成两个窗口,每个窗口都显示本教程。光标在上面的窗口里。


>> 按C-M-v 滚动到下面的窗口里。(如果你没有一个真正的Meta键,那么按ESC C-v)

>> 按 C-x o (“o” 指 “其他(other)”) 把光标移到到下面的窗口里。
>> 用 C-v 和 M-v 滚动下面窗口里的文本。 在上面的窗口里看本教程。


>> 再次按 C-x o 使光标回到上面的窗口里。 现在光标象以前一样在上面的窗口里了。



你能一直用C-x o在窗口间切换。每个窗口都有它自己的光标位置,但仅有一个窗口能显示活动的光标。所有的编辑命令都发生在那个显示光标的窗口上。我们把这个窗口叫做“选中窗口( selected window)”。


当你在一个窗口里编辑文本,而用另一个窗口作参考时命令C-M-v非常有用。你总是能把光标留在所编辑的地方,而用C-M-v来翻阅另一窗口。


C-M-v 是 CONTROL-META 加字符的一个例子。 如果你有一个真正的META 键,你能同时按住 CTRL 和 META 再按“v”来输入C-M-v。CTRL 和 META 谁先按谁后按无所谓。


如果你没有一个真正的META 键, 你可以用 ESC 来代替。这时候次序是有关系的: 你必须让 ESC 跟在 CTRL-v后面; 否则 CTRL-ESC v 将不工作。 这是因为 ESC 是一个有意义的字符而不是一个修饰字符。


>> 输入 C-x 1 (在上面的窗口里) 以消除下面的窗口。



(如果你在下面的窗口里键入C-x 1,将会把上面的窗口去掉。可以把这个命令看作是“只保留你现在在的那个窗口。)


你不必一定要在两个窗口里显示同样的缓冲。如果你在一个窗口里键入C-x C-f查找文件,另一个窗口的内容不会改变。你能独立的在每个窗口里查找文件。


这是让两个窗口显示不同内容的另一种方法:


>> 在你输入的文件名后再输入C-x 4 C-f,然后用 结束。会看到指定的文件出现在下面 的窗口里。光标也在那里面。


>> 键入C-x o 回到上面的窗口,然后输入C-x 1删掉下面的窗口。



* 递归编辑层(RECURSIVE ED99vING LEVELS)
----------------------------------------------------------------

有时候你会进入“递归编辑层(recursive editing level)”。由模式行上的方括号指示。它在主模式名的括号外面。例如你也许会看到(Fundamental)变成了[(Fundamental)]。


要退出递归编辑层,按ESC ESC ESC。这是一个通用的退出命令,你也可以用它除去额外的窗口,或者退出微型缓冲。


>> 输入 M-x 进入一个微型缓冲; 然后用 ESC ESC ESC 离开。

你不能用C-g来退出递归编辑层。这是因为C-g只能取消在递归编辑层里面的命令。


* 获取更多的帮助(GETTING MORE HELP)
--------------------------------------------------------------

在本教程里我们试着为你开始使用Emacs提供了足够多的信息。但是有关Emacs的信息实在是太多以至于不能全部都在这里说明。但是,你还应该学习更多有关Emacs的东西,因为它另外还有很多有用的特性。Emacs提供了很多读取有关命令的文档的命令。这些“帮助”命令都以 Control-h开头,叫做“帮助字符”。


为了使用帮助特性,输入字符C-h,然后再输入一个字符来说明你需要哪种帮助。如果你真的不知道,输入C-h ? 然后 Emacs会告诉你它能给你什么样的帮助。如果你输入了C-h 又觉得不需要任何帮助,你可以用C-g来取消它。


(在有的地方,C-h的作用被改变了。如果按C-h在屏幕的底部没有出现有关帮助的信息的话,试试用F1和M-x help RET来代替。)


最基本的帮助特性是C-h c。输入C-h,然后是字符 c,然后输入一个命令字符和序列;然后 Emacs 会显示这个命令的简洁的描述。


>> 输入 C-h c Control-p.

显示的消息看起来会象这样:


C-p runs the command previous-line


这告诉你“功能的名字”。功能的名字主要用于对Emacs的功能扩充和定制。但因为功能的名字指出了命令的用途,所以最好不要改动它。


C-h c后面可跟多字符命令,比如 C-x C-s 和 (如果你没有 META 或者 ED99v 或者 ALT 键) v 。


要获取有关命令的更多信息,用C-h k 代替 C-h c。


>> 输入 C-h k Control-p.



这将在一个Emacs窗口里显示命令的文档。当你读完后可以用C-x 1除去帮助文本。如果不想马上离开,你可以一边编辑一边参考帮助文本,然后再按C-x 1。


这是一些有用的 C-h 选项:


C-h f 描述一个功能,在你输入了这个功能的名字后。

>> 输入 C-h f previous-line 。 将打印出C-p命令所实现的所有功能。



C-h a 命令查找。输入一个关键字,Emacs将列出所有名字里有这个关键字的命令。 包括所有以Meta-x开始的命令。对有些命令,C-h a 也将列出实现同一功能的 几个命令序列。


>> 输入 C-h a file .




这将在窗口里显示所有名字里有单词“file”的M-x命令。


>> 输入 C-M-v 来滚动帮助窗口,做上几次。


>> 输入 C-x 1 来删除帮助窗口。





* 总结(CONCLUSION)
--------------------------------

记住,永远都用C-x C-c来退出Emacs。用C-z来退到一个临时的外壳里,以使你过后还能回到 Emacs。
本教程尽量让所有的初学者都能理解,如果你发现有些东西不清楚的话,别责备你自己-抱怨吧!


(拷贝与版权)COPYING
---------------------------------

This tutorial descends from a long line of Emacs tutorials starting with the one written by Stuart Cracraft for the original Emacs.


This version of the tutorial, like GNU Emacs, is copyrighted, and comes with permission to distribute copies on certain conditions:

Copyright (c) 1985, 1996 Free Software Foundation


Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
copyright notice and permission notice are preserved,
and that the distributor grants the recipient permission
for further redistribution as permitted by this notice.


Permission is granted to distribute modified versions
of this document, or of portions of it,
under the above conditions, provided also that they
carry prominent notices stating who last altered them.



The conditions for copying Emacs itself are more complex, but in the same spirit. Please read the file COPYING and then do give copies of GNU Emacs to your friends. Help stamp out software obstructionism ("ownership") by using, writing, and sharing free software!

http://blog.csdn.net/chiefsailor/archive/2007/03/22/1538049.aspx

贴自己的.emacs文件 zz

http://hi.baidu.com/chinsung/blog/item/e50bd8545c9b205bd0090665.html


http://hi.baidu.com/chinsung/blog/item/5f33b5518ae5341b377abe4d.html

http://hi.baidu.com/super_c_mew/blog/item/a52be7c94e29bc1f7e3e6ffe.html

Add or eidt file: ".emacs"

(1)After install Emacs, you should create a ".emacs" file yourself, and save it in the path "home/user../"

(2)Install "speedbar" into Emacs

1. download speedbar package from http://packages.ubuntu.com/hardy/speedbar
2. save it in the path opt/speedbar/
3. sudo tar -xzf speedbar-0.14beta4.tar.gz
4. sudo make
Add following code in the file of ".emacs":
;;常用设置
;;(setq default-major-mode 'text-mode);一打开就起用 text 模式。
(global-font-lock-mode t);语法高亮
(auto-image-file-mode t);打开图片显示功能;;
(fset 'yes-or-no-p 'y-or-n-p);以 y/n代表 yes/no,可能你觉得不需要,呵呵。
(column-number-mode t);显示列号
(show-paren-mode t);显示括号匹配
(display-time-mode 1);显示时间,格式如下
(setq display-time-24hr-format t)
(setq display-time-day-and-date t);;
(tool-bar-mode nil);去掉那个大大的工具栏;;
(scroll-bar-mode nil);去掉滚动条,因为可以使用鼠标滚轮了 ^_^
(mouse-avoidance-mode 'animate);光标靠近鼠标指针时,让鼠标指针自动让开,别挡住视线。很好玩阿,这个功能
(setq mouse-yank-at-point t);支持中键粘贴
(transient-mark-mode t);这个忘了,郁闷!
(setq x-select-enable-clipboard t);支持emacs和外部程序的粘贴
(setq frame-title-format "xxx@%b");在标题栏提示你目前在什么位置。你要把xxx改成自己的用户名;;
(setq default-fill-column 80);默认显示 80列就换行

;;color Themes
(load-file "/home/xxx/myemacs/color-theme.el")
(color-theme-deep-blue);选择 deepblue的配色方案

;;speed Themes
~$ cat .emacs
(add-to-list 'load-path "/opt/speedbar/speedbar-0.14beta4")
(autoload 'speedbar-frame-mode "speedbar" "Popup a speedbar frame" t)
(autoload 'speedbar-get-focus "speedbar" "Jump to speedbar frame" t)
(define-key-after (lookup-key global-map [menu-bar tools]) [speedbar] '("Speedbar" . speedbar-frame-mode) [calendar])
;; Texinfo fancy chapter tags
(add-hook 'texinfo-mode-hook (lambda () (require 'sb-texinfo)))
;; HTML fancy chapter tags
(add-hook 'html-mode-hook (lambda () (require 'sb-html)))
;; For any verison of emacs on a linux RPM based system:
;; (autoload 'rpm "sb-rpm" "Rpm package listing in speedbar.")
;; For any version of emacs where w3 is installed:
;; w3 link listings (autoload 'w3-speedbar-buttons "sb-w3" "s3 specific speedbar button generator.")

Monday, May 18, 2009

ubuntu8.10安装配置emacs22

1. 准备工作
(1)安装CVS、SSH
sudo apt-get install ssh cvs

(2)安装texinfo(为了编译man包)
sudo apt-get install texinfo

(3)安装编译所需的支持包
sudo apt-get install libgtk2.0-dev xlibs-dev (GNOME界面相关)
sudo apt-get install xserver-xorg-dev
sudo apt-get install build-essential
sudo apt-get install libncurses5 libncurses5-dev
sudo apt-get build-dep emacs21 (编译emacs21所需)

2.安装
sudo apt-get install emacs

Thursday, May 14, 2009

intel Fortran 编译器 10.1 Linux*版入门 4

英特尔 ® Fortran 编译器 10.1 Linux* 版入门指南、安装指南和发行说明[4]
原始文档下载地址
http://www.intel.com/cd/software/products/apac/zho/358463.htm

系统要求
处理器术语
英特尔® 编译器支持三种平台:处理器与操作系统类型的常规组合。这部分介绍英特尔在其文档、安装过程以及技术支持网站中用于描述平台的术语。

IA-32
IA-32 体系结构指基于以下处理器且运行 32 位操作系统 ("Linux x86") 的系统:通常与英特尔奔腾® II 处理器兼容的 32 位处理器(例如,英特尔® 奔腾® 4 处理器或英特尔® 至强® 处理器),或是其它厂商生产的支持相同指令集的处理器。

Intel® 64
Intel® 64 体系结构指基于带 64 位体系结构扩展的 IA-32 体系结构处理器(例如,英特尔® 酷睿™2 处理器系列)且运行 64 位操作系统 ("Linux x86_64") 的系统。如果系统运行 32 位版的 Linux 操作系统,则适用 IA-32 体系结构。针对 Intel® 64 体系结构应用程序的英特尔编译器还支持以下系统:基于 AMD* Athlon64* 与 Opteron* 处理器,并且运行 64 位操作系统的系统。
IA-64
指基于英特尔® 安腾® 2 处理器且运行 64 位操作系统的系统。

本机与跨平台开发
术语“本机”是指构建一个应用程序,它将在构建时使用的相同平台上运行;例如,在 IA-32 体系结构上构建要在 IA-32 体系结构上运行的应用程序。术语“跨平台”或“交叉编译”是指构建一个应用程序,它运行时使用的平台与构建时使用的平台属于不同的类型;例如,在 IA-32 体系结构上构建要在 IA-64 体系结构上运行的应用程序。并非所有的跨平台开发组合都受支持,有些组合可能需要安装可选的工具与函数库。
下表介绍支持的编译主机(构建应用程序的系统)与应用程序目标(运行应用程序的系统)组合。
IA-32 体系结构主机
支持的目标:IA-32
Intel® 64 体系结构主机
支持的目标:IA-32 与 Intel® 64
IA-64 体系结构主机
支持的目标:IA-64
备注:开发与主机不同的目标时,可能需要从 Linux 发行包中安装可选的函数库组件。
备注:“英特尔® 集群 OpenMP*”是单独授予许可证的功能,与编译器的系统要求也不相同。如需有关详细信息,请参阅“英特尔集群 OpenMP”文档。

开发 IA-32 体系结构应用程序的要求
  • 基于 IA-32 体系结构处理器(最低 450 MHz 主频的英特尔奔腾® II 处理器,或更高级的处理器 - 建议配备英特尔® 酷睿™2 处理器系列或英特尔® 奔腾® 4 处理器)、Intel® 64 体系结构处理器的系统,或是基于 AMD* Athlon* 或 AMD Opteron* 处理器的系统
  • 512 MB 内存(建议配备 1GB)。
  • 100 MB 的磁盘空间,另外还需要 200 MB 空间,用于存放安装过程中下载的文件与临时文件。
  • 以下 Linux 版本(这是经英特尔测试过的操作系统版本的列表;其它版本可能会,也可能不会正常工作,因此不建议使用 - 如有任何疑问,请与“英特尔® 首要支持”联系)之一:
    Asianux* 3.0
    Debian* 4.0
    Fedora* 7
    Red Hat Enterprise Linux* 3, 4, 5
    SUSE LINUX Enterprise Server* 9, 10
    TurboLinux* 11
    Ubuntu* 7.04
  • 安装了“Linux 开发工具”组件,包括 gcc 3.2.3、3.3、3.4、4.1、4.11、g++ 以及相关工具
  • 提供 libstdc++.so.5 的 Linux 组件 compat-libstdc++


针对 Intel® 64 体系结构系统或针对 AMD* Opteron* 处理器开发应用程序时的要求

  • 基于 IA-32 或 Intel® 64 体系结构处理器(建议配备英特尔® 酷睿™2 处理器系列或英特尔® 至强® 处理器),或是基于 AMD Opteron 处理器的系统
  • 512 MB 内存(建议配备 1GB)
  • 300 MB 的空闲硬盘空间,另外还需要 300 MB 空间,用于存放安装过程中下载的文件与临时文件。
  • 100 MB 硬盘空间,用于虚拟内存页面文件。确保使用的虚拟内存量至少达到针对安装的 Linux 操作系统版本所建议的最小值
  • 以下 Linux 版本(这是经英特尔测试过的操作系统版本的列表;其它版本可能会,也可能不会正常工作,因此不建议使用 - 如有任何疑问,请与“英特尔® 首要支持”联系)之一:
    Asianux* 3.0
    Debian* 4.0
    Fedora* 7
    Red Hat Enterprise Linux* 3, 4, 5
    SGI ProPack* 5
    SUSE LINUX Enterprise Server* 9, 10
    TurboLinux* 11
    Ubuntu* 7.04
  • 安装了“Linux 开发工具”组件,包括 gcc 3.2.3、3.3、3.4、4.1、4.11、g++ 以及相关工具
  • 提供 libstdc++.so.5 的 Linux 组件 compat-libstdc++


开发 IA-64 体系结构应用程序的要求

  • 基于英特尔® 安腾® 2 处理器的系统。
  • 512 MB 内存(建议配备 1 GB)。
  • 150 MB 的磁盘空间,另外还需要 200 MB 空间,用于存放安装过程中下载的文件与临时文件。
  • 以下 Linux 版本(这是经英特尔测试过的操作系统版本的列表;其它版本可能会,也可能不会正常工作,因此不建议使用 - 如有任何疑问,请与“英特尔® 首要支持”联系)之一:
    Asianux* 3.0
    Debian* 4.0
    Red Hat Enterprise Linux* 3, 4, 5
    SUSE LINUX Enterprise Server* 9, 10
    TurboLinux* 11
  • 安装了“Linux 开发工具”组件,包括 gcc 3.2.3、3.3、3.4、4.1、4.11、g++ 以及相关工具
  • 提供 libstdc++.so.5 的 Linux 组件 compat-libstdc++


关于 gcc 版本的说明
英特尔编译器使用许多不同的 Linux 操作系统版本(具有不同版本的 gcc)进行过测试。某些 Linux 版本可能包含与已经测试过的版本不同的头文件,这可能会导致问题。您使用的 glibc 版本必须同使用的 gcc 的版本保持一致。
备注:

  • 使用 -O3、-ipo 及 -openmp 等高级优化选项编译非常庞大的源文件(几千行)时,所需的内存量可能会明显大很多。
  • 上面的处理器型号名称列表并非毫无遗漏 - 与上面列出的那些处理器支持相同指令集的其它处理器型号应该也可以正常使用。如果有关于特定处理器型号的问题,请与“英特尔® 首要支持”联系。
  • 有些优化选项在运行应用程序的处理器类型方面存在限制。如需有关详细信息,请参阅这些选项的文档。


安装
如需有关安装编译器与设置编译器环境的详细信息,请参阅单独的安装指南。在本文的其它部分,使用 表示的默认安装目录是:
/opt/intel/fc/10.1.xxx(针对 IA-32 与 IA-64)
/opt/intel/fce/10.1.xxx(针对 Intel® 64)
/opt/intel/idb/10.1.xxx(针对 IA-32 与 IA-64)
/opt/intel/idbe/10.1.xxx(针对 Intel® 64)


已知问题
OpenMP 应用程序的二进制文件不兼容
在安装“英特尔编译器 10.1 版”之后,使用“英特尔编译器 9.0 版”并指定 -openmp 开关编译的程序可能无法运行。对于这类程序,加载器可能会在运行时退出,并出现以字符串 _intel 开头的有关未定义符号的错误消息(例如,_intel_fast_memset)。如果发生这种情况,请使用“英特尔编译器 10.1 版”重新编译可执行文件,之后加载器错误消息应该会消失。


RPM 4.0.2 与 RPM 4.1 的安装警告
RPM 4.0.2 无法安装到非默认目录。这个问题在 RPM 4.0.3 中已经解决。RPM 4.1 无法安装到非默认目录。这个问题在 RPM 4.11 到 4.2 中已经解决。


静态链接 libpthreads 时的段冲突
在某些版本的 Linux 上,对于使用静态链接的 libpthreads.a 构建的应用程序(使用 -static 时,默认使用 libpthreads.a), 在使用大于 2GB 的堆栈空间时,可能会因为段冲突而失败。这是 Linuxthreads 的一个已知问题。如果遇到此问题,请动态链接 libpthreads。作为变通方法,在 Red Hat Linux 9 与 Red Hat Enterprise Linux 3.0 上,您可以安装 nptl-devel 软件包,并在 ifort 命令行上传递 "-I/usr/include/nptl -L/usr/lib/nptl"。这将创建一个静态链接的二进制文件,它将仅在 nptl 下运行,但没有堆栈大小的限制。


OpenMP 限制

  • 在某些版本的 Linux POSIX 线程库中,堆栈大小限制以硬编码方式写在程序中,因此在某些版本的 Linux 上,需要很大堆栈空间的 POSIX* 多线程程序可能无法正确运行。英特尔编译器使用 POSIX 线程库来实现基于 OpenMP 的自动生成的并行化,因此这些限制也适用于 OpenMP 程序 (-openmp) 以及使用英特尔编译器自动生成的并行程序 (-parallel)。超出堆栈空间限制的多线程程序通常会遇到段冲突或寻址错误。
    要避免这些限制,请使用在构建时定义了 FLOATING_STACKS 参数的 glibc 版本。对于某些发行版,这意味着使用共享的 pthread 库而不是静态版的 pthread 库。然后,使用 ulimit -s 或 limit stacksize 命令将最大 shell 堆栈大小设置为明显非常大的值(以 KB 为单位,但不是 unlimited),并将 KMP_STACKSIZE 环境变量设置为所需的线程堆栈大小(以字节为单位)。请注意,在 bash shell 中,只能使用一次 ulimit -s 来设置很大的最大堆栈大小。在 C shell (csh) 中,可以使用 limit stacksize(参数之前没有短划线)重复设置最大堆栈大小。
  • 请注意,在特定版本的 Linux(Red Hat Enterprise Linux 4 及更早的版本是已知的示例)上,默认安装的 /usr/lib/libpthread.a 与 /usr/lib/libc.a 不完全支持 Linux 线程本地存储器(Thread Local Storage,简称 TLS)。使用 Linux TLS 机制并使用 -static 进行链接时,如果尝试访问线程本地存储器,则包含 -openmp 或调用 libpthread 便可能触发运行时故障。为纠正此问题,请安装 nptl-devel.rpm 软件包(包含在 Linux 安装光盘上)并使用 -L/usr/lib/nptl 进行编译。
  • 如果公用块声明为带 OpenMP 指示的 THREADPRIVATE,则公用块在声明它的所有源文件中都必须有相同的长度。


IA-64 Linux 系统上的 gprel relocation(gprel 重新定位)错误消息
在运行 Linux 的 IA-64 系统上,使用 -shared 开关创建“动态共享目标”(.so) 时,在 ld 阶段可能会生成一些 "relocation against dynamic symbol"(动态符号重新定位)消息,类似于:
/usr/bin/ld: for_init.o: @gprel relocation against dynamic symbol for__segv_default_msg/usr/bin/ld: for_init.o: @gprel relocation against dynamic symbol for__l_fpe_mask/usr/bin/ld: for_init.o: @gprel relocation against dynamic symbol for__l_undcnt

...
要纠正此问题,请将 -i_dynamic 与 -nofor_main 开关添加到命令行。对于 9.0 版,指定 -shared 时,将自动设置 -i_dynamic 与 -nofor_main。


不再支持 -ipo_obj 选项。
强制生成直接目标代码的 -ipo_obj 选项不再受支持。如果指定该选项,则会发出一个警告,并且其效果与指定 -ip 时的一样。
在 IA-64 体系结构系统上,-relax 不再传递给链接器
对于 9.0 版,编译器驱动程序不再将 -relax 开关传递给 IA-64 体系结构系统上的链接器,原因在于这与 -r 选项冲突。使用 binutils 2.11.90.0.27 或更高版本(建议使用 2.14)时,由于 -relax 是默认选项,因此不需要指定它。如果必须使用较早版本的 binutils 并希望指定 -relax 选项,请在调用链接器的编译命令中使用 -Xlinker -relax。


SLES 10 上关于 libunwind.so.7 的 ld 警告
在 SUSE LINUX Enterprise Server 10 上使用英特尔编译器构建应用程序时,可能会看到类似以下的警告:
ld: warning: libunwind.so.7, needed by /usr/lib/gcc/ia64-suse-linux/4.1.0/../../..//libgcc_s.so, may conflict with libunwind.so.6
变通办法是将以下命令行添加到 ifort.cfg:
-L /usr/lib
此问题会在将来发行的英特尔编译器中得到解决。


使用 CPU 自动调度 (-ax*) 时的调试信息有限
使用 -ax{WNBP} 进行编译时,会为每个函数生成两份代码。一份是针对通用代码,另一份是特定于 CPU 的代码。每个函数的符号随后引用“CPU 自动调度”例程,在运行时确定要执行生成的哪一个代码部分。使用名称在这些函数上设置的调试器断点会导致应用程序在调度例程中停止。这可能会导致在调试时出现意外的行为。此问题可能会在将来版本的“英特尔调试器”与“英特尔编译器”中得到解决。


对于构建时未使用 -fp 的 IA-32 体系结构的程序,无法进行调试或无法查看其跟踪信息
使用 -fp 编译时,指定将 IA-32 体系结构 EBP 寄存器用作帧指针,而不是用作通用寄存器。调试器与跟踪处理器可能无法正确展开特定的堆栈(包含对编译时未使用 -fp 的函数的调用)。如果使用 -g 或 -O0 进行编译,-fp 是隐含启用的;但明确指定更高的优化级别(如 -O2)时,则不会启用它。如果希望在应用程序上使用调试器或跟踪器,并且要使用的优化级别高于 -O0,则还应该指定 -fp,以确保调试器与跟踪处理器可以使用帧指针。

汇编器可能无法识别生成的代码
旧版 GNU 汇编器可能无法处理编译时使用了 -[a]xP、T 或 S 选项而生成的汇编代码。如果对于您而言这是个问题,请使用 binutils 2.17.50.0.15 或更高版本。

用带扩展调试信息的 idb
如果使用 inline_debug_info、semantic_stepping、variable_locations 或 extended 等 -debug 关键字,则应该使用“英特尔调试器”(idb);原因在于其它调试器可能不理解这些扩展信息,并因此出现无法预测的行为。我们正在与其它调试器的开发人员合作,以期获得他们对扩展调试信息的支持。


不支持 -auto_ilp32 选项
-auto_ilp32 选项不受支持,该选项指定应用程序不得超出 32 位地址空间(这在文档中有提及)。


启用运行时检查时,可能也会启用编译时检查
在某些情况中,使用 -check 或 -C 选项启用运行时检查时,如果当时可以诊断所请求的条件,则可能会导致编译器在编译时发出针对该条件的诊断信息。例如,如果指定 -check bounds 或 -CB,则常数下标的数组越界可能会导致编译时错误。


技术支持
如果未在安装过程中注册编译器,请访问英特尔® 软件开发产品注册中心进行注册。注册之后,在技术支持服务期间,您可以获取免费技术支持、产品更新以及升级。
如需有关如何找到“技术支持”、“产品更新”、“用户论坛”、常见问题、提示与技巧的信息,以及其它技术支持信息,请访问:http://www.intel.com/software/products/support/flin
备注:如果分销商提供本产品的技术支持,请与他们而不是英特尔联系技术支持事宜。


提交问题
提交问题的步骤:

  • 转到 http://www.intel.com/software/products/support,然后单击“英特尔® 首要支持”的链接。
  • 登录该网站。请注意,用户名与密码区分大小写。
  • 单击“产品”下拉列表旁边的“执行”按钮。
  • 单击左侧导航栏中的“提交问题”链接。
  • 从“产品类型”下拉列表中,选择“开发环境(工具、SDV、EAP)”。
  • 如果是与软件或许可证相关的问题,请从“产品名称”下拉列表中选择“英特尔(R) Fortran 编译器 Linux* 版”。
  • 输入问题,填写随后出现的各个窗口中的所有字段,以便成功提交问题。
    备注:在提交源代码(对源代码的访问需要限制为特定的国家或地区)之前,请通知技术支持代表,以确定是否允许受理这项请求。


问题报告或产品建议的指导原则:

  • 描述困难或建议。对于问题报告,请尽可能具体一些,以便我们能够重现问题。对于编译器问题报告,如果可能,请包含编译器选项与较小的测试用例。
  • 描述系统配置信息。使用以下命令获取 glibc 与内核的版本:

> uname -a

> rpm -qa grep glibc

如果未安装 rpm,请使用以下命令:

> ls /lib/libc*

并将信息复制到相应的“英特尔® 首要支持”字段。
使用以下命令获取“英特尔 Fortran 编译器”的“软件包标识”:

ifort -V

然后从输出内容中,将“软件包标识”(如 l_fc_x_10.1.xxx)复制到相应的“英特尔® 首要支持”字段中。请包含可能有助于我们重现并解决您的问题的任何其它特定信息。

  • 如果无法安装编译器或获取“软件包标识”,请输入所下载的文件名作为软件包标识。


已解决的问题
如需了解最新版的编译器中已经解决的问题,请查阅 <软件包标识>_README(例如 l_fc_x_10.1.xxx_README),它可以从英特尔® 软件开发产品注册中心的“产品下载”部分下载。
编译器源代码减错器 (CESR)
“ 编译器源代码减错器”(CESR) 包含一套非常有用的实用程序,它们可以单独使用,也可以组合在一起使用,能够对由 C/C++ 或 Fortran 源代码组成的测试用例进行多种处理,包括收集、缩减、精确定位、保护、文档编制及打包等。如果希望从庞大的应用程序中提取较小的测试用例提交给“英特尔® 首要支持”,它会很有帮助作用。CESR 可以从英特尔® 软件开发产品注册中心的“产品下载”部分进行下载。选择您的产品,然后在“版本”下拉列表中选择 CESR。CESR 是实验性产品,我们不为它提供技术支持,但仍然非常欢迎您通过“英特尔® 首要支持”向我们提供有关该产品的反馈。CESR 要求先安装 Python* 2.2 或更新版本。


文档
您可以使用 Web 浏览器来查看英特尔编译器以及相关的基于 HTML 的文档。您应该使用支持 JavaScript 的 Web 浏览器(如 Firefox*),这样它便可以为联机帮助文件提供全面的浏览、搜索、索引查询,以及超链接功能。
文档安装在 /doc 目录中。HTML 索引文档可以在 /doc/Doc_Index.htm 中找到。英特尔® 调试器手册 在“英特尔® 调试器”的 doc 目录中以 HTML 的形式提供。
查看手册页
ifort(1) 手册页提供 ifort 编译器命令的命令行选项列表及相关信息。要显示 ifort(1) 手册页,在使用 source 命令执行 < 文件以设置环境之后,输入以下命令:
$ man ifort
man 命令提供一些单键或组合键,让您滚动查看显示的内容、搜索字符串、跳转到某个位置,以及执行其它功能。例如,输入 z 查看下一个屏幕;或输入 w 查看上一个屏幕。要获得有关 man 命令的帮助,请输入 h 键;查看完帮助时,输入 q 键以返回到所显示的手册页中。要进行搜索,请输入 / 字符,后接搜索字符串 (/string),然后按 Enter 键。查看 man 命令文本之后,输入 q 以返回到 shell 命令提示符中。


查看文档
在受支持的 Linux* 发行版所附带的 Web 浏览器上,HTML 文档格式经测试可以正常工作。PDF 版的编译器文档可以在以下位置找到:http://developer.intel.com/software/products/compilers/flin/docs/manuals.htm


附加信息
相关产品与服务

有关英特尔软件开发产品的信息可以在 http://www.intel.com/software/products 上找到。
其中一些相关产品包括:
Intel® Software College 为开发人员提供一流的软件开发技术培训。培训包括在线课程与讲师指导的课程,内容涵盖所有的英特尔架构、平台、工具及技术。
英特尔® VTune™ 性能分析器可以评估应用程序的 CPU 使用情况,并帮助确定是否可以通过进行一些修改来改善应用程序的性能。
英特尔® C++ 与 Fortran 编译器是让软件运行如飞,并全面支持最新英特尔处理器的重要组成部分。
英特尔® 性能程序库提供一套针对各种英特尔处理器进行过优化的例程。英特尔® Math Kernel Library 为科学与工程软件的开发人员提供一整套线性代数、快速傅立叶变换以及矢量数学函数,它们均针对最新的英特尔处理器进行过优化。英特尔® 集成性能基元包含多个跨平台的工具,可针对多种英特尔架构与多个操作系统构建高性能的软件。


免责声明与法律信息
本文所含信息专门针对英特尔(R) 产品提供。本文并未授予任何知识产权的许可证,无论是明确、暗示、禁止翻供还是其它任何形式。除这些产品的“英特尔销售条款”之规定外,英特尔概不承担任何其它义务,对于英特尔产品的销售与/或使用(包括适合特定用途、适销性或不侵犯任何专利权、版权或其它知识产权),英特尔不作任何明确或暗示的担保,也不承担任何赔偿责任。未经英特尔公司书面同意,不应将英特尔产品用于任何在发生故障时可能会造成人身伤亡的用途,英特尔产品并未针对这些用途而设计,也不旨在用于这些用途。
英特尔随时可能更改技术规格与产品说明,如确有更改,恕不另行通知。标有“保留”或“未定义”字样的任何功能或指令,其存在性与特性均不确定,设计人员切勿对此有所依赖。英特尔保留这些供将来定义之用,对于因将来对它们的更改而导致的任何冲突或不兼容现象,英特尔概不承担任何责任。本文所含信息可随时更改而不另行通知。不应依赖这些信息进行最终设计决策。
本文所述产品可能包含一些设计缺陷或错误(统称错误),导致产品与发布的规格不符。目前已确定的错误可应客户要求提供。
在订购产品之前,请与当地的英特尔销售办事处或分销商联系,以获取最新规格。
对于本文中引用的并且包含订单号的文档,或是其它的英特尔文档,均可通过拨打 1-800-548-4725 或访问英特尔网站来获取。
赛扬、迅驰、英特尔、英特尔徽标、Intel386、Intel486、英特尔酷睿、安腾、MMX、奔腾、VTune 以及至强是英特尔公司在美国以及其它国家或地区的商标。
* 其它品名与品牌可能是属于其它公司的资产。
(C) 2007 英特尔公司版权所有。保留所有权利。

(http://blog.sina.com.cn/s/blog_51ffcfc301009utw.html~type=v5_one&label=rela_nextarticle)

intel Fortran 编译器 10.1 Linux*版入门 3

英特尔 ® Fortran 编译器 10.1 Linux* 版入门指南、安装指南和发行说明[3]
原始文档下载地址
http://www.intel.com/cd/software/products/apac/zho/358463.htm

英特尔® Fortran 编译器 10.1 Linux* 版发行说明
目录
概述
新增功能
系统要求
安装
已知问题
技术支持
文档
附加信息
免责声明与法律信息
概述
本 产品为 Linux* 软件开发人员提供各种工具,用于创建性能出众的 Fortran 应用程序。“英特尔® Fortran 编译器”是完整的 Fortran 95 语言编译器,它包含 Fortran 2003 标准中的许多功能,此外还有广泛的主流语言扩展。英特尔编译器通过对并行化与 OpenMP* 的支持,来支持多线程代码的开发。
产品内容
本产品有两个版本。
标准版包含以下组件:
  • 针对 IA-32 体系结构应用程序的“英特尔® Fortran 编译器”
  • 针对 IA-64 体系结构应用程序的“英特尔® Fortran 编译器”
  • 针对 Intel® 64 体系结构应用程序的“英特尔® Fortran 编译器”
  • 针对 IA-64 体系结构应用程序的“英特尔® 汇编器”
  • 英特尔® 调试器(请参阅单独的“发行说明”)
  • 实用程序
    英特尔® 编译器代码覆盖工具
    英特尔® 编译器测试优先级调整工具
  • 光盘文档
    为方便访问所有的文档,提供了一个文档索引。它位于 /doc/Doc_Index.htm

专业版包含“标准版”的所有内容,外加“英特尔® Math Kernel Library”,这个函数库包含许多经过高度优化且充分线程化的数学函数,适用于对性能要求极高的工程、科学以及金融等领域的应用。
备注:“英特尔® Fortran 编译器”的安装路径是 /opt/intel/fc/10.1.xxx,其中 xxx 代表 3 位数字的更新号。本文通篇使用 一词指代默认的安装路径。
“英特尔® Math Kernel Library”的安装独立于编译器。如需有关详细信息,请参阅“英特尔® Math Kernel Library 安装指南”。
要获取本产品中提供的各种工具的技术支持与产品更新,需要进行注册。如需了解如何注册,请参阅下面的技术支持部分。


兼容性
对 于使用 8.0 版之前的编译器(包括会创建 .mod 文件的那些编译器)编译的所有 Fortran 源代码,都必须重新编译。使用 8.0 之前的版本构建的第三方函数库也需要重新构建 - 如果使用的第三方函数库不支持“英特尔 Fortran”,请通过“英特尔® 首要支持”https://premier.intel.com 告诉我们是哪些。使用“英特尔 Fortran 8.0”或之后的版本构建的 Fortran 源代码无需使用 10.1 版重新编译。
另请参阅下文的“Fortran-C/C++ 混合语言应用程序的链接方面的变动”部分。


10.0 与 10.1 版的新增功能
以下部分讨论“英特尔 Fortran 编译器”自 10.0 版以来所引入的新功能与更改。对于“英特尔调试器”,请参阅单独的发行说明。
新增与更改过的命令行选项
下面列出自 9.1 版初次发行以来新增或更改过的命令行选项。如需有关这些选项的详细信息,请参阅编译器文档。
-assume [no]old_boz
控制二、八、十六进制的常数在作为 INT、REAL、DBLE 及 CMPLX 等内部函数的参数时如何进行处理。请参阅下面关于 Fortran 2003 行为的说明。(默认值:-assume noold_boz)
-assume [no]old_unit_star
控制与设备* 之间如何进行输入、输出,以及如何处理 ACCEPT、PRINT 以及 TYPE。请参阅下面关于 Fortran 2003 行为的说明。(默认值:-assume old_unit_star)
-assume protect_parens
确定优化器在对 REAL 与 COMPLEX 表达式进行求值时,是否会不重新组合各个运算来优先处理括号。(默认值:off)
-assume [no]realloc_lhs
确定赋值语句左侧的可分配对象是按照 Fortran 95/90 规则还是 Fortran 2003 规则进行处理。请参阅下面关于 Fortran 2003 行为的说明。(默认值:off)
-assume [no]std_mod_proc_name
确定是否允许模块过程的名称与用户外部符号名称冲突。请参阅下文备注。(默认值:off)
-axS
指定编译器生成“SSE4 矢量化编译器与媒体加速器”指令(针对将来支持这些指令的英特尔处理器)以及普通的 IA-32 体系结构代码。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-check [no]pointer
启用或禁用以下运行时检查:是否通过空指针进行访问,或是否访问未分配的 ALLOCATABLE 变量。(默认值:off)
-cxxlib-nostd
防止编译器链接标准的 C++ 库(默认值:off)
-diag-
控制诊断信息的显示(默认值:off)
-diag-dump
告诉编译器打印所有已经启用的诊断消息并停止编译(默认值:off)
-diag-enable sv[123]
启用“静态验证器”。(默认值:off)
-diag-enable sv-include
指定“静态验证器”也应考虑 include 文件。
-diag-file[=file]
将诊断分析的结果输出到一个文件。(默认值:off)
-diag-file-append[=file]
将诊断分析的结果附加到一个文件。(默认值:off)
-[no-]diag-id-numbers
告诉编译器通过使用诊断消息的标识号值来显示诊断消息(默认值:on)
-f[no-]align-functions[=n]
告诉编译器以最优字节边界对齐函数。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-fast
启用一组用于改善性能的选项。在此发行版中,这些选项已经改变。请参阅下文备注。
-f[no-]instrument-functions
确定是否在函数入口与出口点插入指令(默认值:off)
-f[no]-keep-static-consts
告诉编译器保留给源代码中未引用的变量分配的空间(默认值:off)
-fp-speculation=
告诉编译器推测浮点运算时的模式(默认值:fast)
-[no-]func-groups
如果启用评测信息,则启用或禁用函数组合功能(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-gdwarf-2
启用使用 DWARF2 格式生成调试信息的功能(默认值:off)
-heap-arrays[-]
指定应该在堆而不是堆栈上分配自动数组,以及为了临时计算而创建的数组。
-help [category]
显示所有可用的编译器选项或某一类编译器选项(默认值:off)
-ipo-jobs
指定要在“过程间优化”(IPO) 的链接阶段同时执行的命令(作业)数
-march=
告诉编译器生成针对指定的 CPU 的代码(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-msse[n]
告诉编译器生成针对特定英特尔® 处理器的代码(仅限 IA-32 与 Intel® 64 体系结构,默认值:IA-32 为 off,Intel® 64 体系结构为 -msse2)
-mtune=core2
告诉编译器选择为英特尔® 酷睿™2 处理器系列带来好处的优化(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-openmp-lib type
可供指定用于链接的 OpenMP* 运行时库。. (默认值:legacy)
-[no-]opt-multi-version-aggressive
告诉编译器主动使用多版本功能来检查指针别名与标量替换。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-opt-ra-region-strategy [=keyword]
选择寄存器分配器用于将每个例程划分成区域的方法。(仅限 IA-32 与 Intel® 64 体系结构,默认值:default)
-opt-streaming-stores keyword
启用生成数据流存储以进行优化的功能。(仅限 IA-32 与 Intel® 64 体系结构,默认值:auto)
-[no-]par-runtime-control
生成代码以便对具有符号循环边界的循环执行运行时检查。(默认值:off)
-par-schedule-[=n]
指定 DO 循环迭代的调度算法
-[no-]prefetch
启用或禁用预取插入优化。在 IA-32 体系结构上使用时需要指定 -xT。(仅限 IA-32 与 IA-64 体系结构,默认值:off)
-save-temps[-]
告诉编译器保存编译期间创建的中间文件(默认值:off)
-shared-intel
使英特尔提供的库可以动态链接(默认值:除 libguide 之外,所有的库都静态链接)
-shared-libgcc
动态链接 GNU libgcc 库。(默认值:off)
-static-intel
使英特尔提供的库可以静态链接(默认值:除 libguide 之外,所有的库都静态链接)
-static-libgcc
静态链接 GNU libgcc 库。(默认值:off)
-std 或 -stand
与 -std03 或 -stand f03 相同。请注意,这与之前的版本相比有所变化。(默认值:off)
-std03 或 -stand f03
告诉编译器针对不符合 Fortran 2003 标准的源代码语法发出警告。(默认值:off)
-tcheck []
指出要对 OpenMP 多线程应用程序执行的分析方法(默认值:off)
-tcollect
插入调用“英特尔® 踪迹收集器”API 的指令探针(默认值:off)
-[no-]unroll-aggressive
告诉编译器对包含小常数遍历计数的循环主动使用完整的展开。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-[no-]vec-guard-write
告诉编译器在矢量化循环中执行条件检查。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-xO
指 定编译器要生成 SSE3、SSE2 以及 SSE 指令,并且要针对含 SSE3 的英特尔® 奔腾® 4 处理器与英特尔® 至强® 处理器进行优化。生成的代码应该能够在并非英特尔制造但支持 SSE3、SSE2 以及 SSE 指令集的处理器上运行,如某些 AMD* 处理器。此值不启用在 S、T、P 等处理器值中启用的某些优化选项。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-xS
指 定编译器生成“SSE4 矢量化编译器与多媒体加速器”指令(针对将来支持这些指令的英特尔处理器)。此选项还允许编译器生成 SSSE3、SSE3、SSE2 以及 SSE 指令,并且它可以针对将来的英特尔处理器进行优化。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)


不再建议使用的和已经删除的命令行选项
如需有关不再建议使用(仍然起作用,但将在未来的版本中删除)或已经删除(不再支持)的命令行选项的详细信息,请参阅光盘文档中的 Compiler Options > Deprecated and Removed Compiler Options(编译器选项 > 不再建议使用的和已经删除的编译器选项)部分。
-fast 的含义已更改
-fast 选项是一种简便方式,用于指定通常可改善运行时性能的一组选项。如文档所述,随着时间的推移,这组选项可能会发生变化。在 10.0 版中,-fast 设置 -xT;而在较早的版本中,它设置 -xP。如果此变化对您而言不合适,则您必须单独指定所需的选项,而不是使用 -fast。如需有关详细信息,请参阅光盘文档上的 Compiler Options(编译器选项)部分。


-stand 的含义已更改
在 10.0 版中,指定 -stand 选项而后面不跟关键字时,其含义已经变为 -stand f03,即检查是否符合 Fortran 2003。通过指定 -stand f90 或 -stand f95,您可以选择检查是否符合 Fortran 90 或 Fortran 95。-std 是 -stand 的替代性拼写法。请注意,Intel® Fortran Language Reference(英特尔® Fortran 语言参考)仍然将 Fortran 2003 功能作为对 Fortran 95 的扩展来突出介绍。


在 Intel® 64 体系结构系统上,默认情况下 -xW 是启用的
在 Intel® 64 体系结构的系统上,默认情况下 -xW 是启用的;这相当于启用矢量化,您可能会看到显示的矢量化报告消息,这是使用以前的发行版所无法看到的。要禁用矢量化报告消息,请使用 -diag-disable vec。您仍然可以指定替代性选项,如 -xP 或 -axT。


替代性命令行选项
许多命令行选项都有老式的拼写,选项名称中的单词之间使用下划线 ("_") 而不是连字符 ("-") 来连接。老式拼写仍然是有效的替代性选项名称。


支持 gcc* OpenMP* 库
对于 10.1 版,您可以通过指定 -openmp-lib compat 来指定使用与 gcc 兼容的 OpenMP 库。如果您的应用程序包含某些使用 gcc 或 g++ 所构建的源模块,并且使用了 OpenMP,这可能正是所需要的。默认值是 -openmp-lib legacy,它使用英特尔提供的 OpenMP 库。


Fortran 2003 行为
Fortran 2003 定义作为对以前标准的扩展,或是较早的标准中未指定的语言功能的行为。尽管“英特尔 Fortran 编译器 10.1 版”尚不支持 Fortran 2003 的全部功能;但在某些情况中,此编译器现在选择的是 Fortran 2003 的行为,而较早的编译器版本选择的则是不同的行为。在其它某些情况中,此编译器的默认行为尚没有发生变化。这些情况如下文所述。


对可分配对象的赋值
在 Fortran 95 中,对可分配数组的赋值要求赋值语句左右两侧的形状与长度参数都要匹配。在 Fortran 2003 中,如果形状与长度参数不匹配,则取消分配所赋值的变量,然后重新分配到与赋值的表达式匹配的形状与长度参数。对于 10.1 版,编译器可以执行 Fortran 2003 指定的额外操作,但由于这些操作会明显影响性能,默认值是保留 Fortran 95 行为,即形状与长度参数要求匹配。如果希望采取 Fortran 2003 的行为,即在形状不匹配时取消并再次分配变量,请指定 -assume realloc_lhs


二、八、十六进制常数
在 Fortran 95 中,二、八、十六进制常数(“BOZ 常数”)只能出现在 DATA 语句中,并且限制为初始化标量整型变量。作为 Fortran 95 的扩展,“英特尔 Fortran 编译器”允许 BOZ 常数出现在任何上下文中,类型诠释由上下文来确定。Fortran 2003 对 BOZ 常数的用法进行了扩展,允许它们初始化任何数值类型,并且允许它们出现在 INT、REAL、DBLE 以及 CMPLX 内部函数的参数中。
BOZ 常数用法的 Fortran 2003 语义同以前“英特尔 Fortran”的扩展版相同,但 BOZ 常数作为 INT、REAL、DBLE 以及 CMPLX 等函数的参数的情况除外。按照 Fortran 2003 的规定,在这些上下文中,BOZ 常数诠释为二进制值,也就是直接作为内部函数返回的数据类型进行诠释;而在以前的“英特尔 Fortran”诠释中,BOZ 常数先是视作有符号整型值,随后再进行转换。
例如:
print *, real(Z'40490FDB')
按照旧式的行为 (-assume old_boz),打印结果是 1.0785300E+09;而按照新的行为 (-assume noold_boz),打印结果是 3.141593。
对于 10.0 版,“英特尔 Fortran”的默认行为是 Fortran 2003 的行为,即传递二进制值而不进行转换。如果应用程序需要旧式的行为,请使用 -assume old_boz 选项进行编译。


默认 I/O 设备 *
在“英特尔 Fortran 编译器”中的默认情况下,同 ACCEPT、PRINT 以及 TYPE 语句使用的 I/O 设备* 与隐含设备关联的设备号和可以在 OPEN 语句中指定的设备号(如设备 5 或 6)不同。Fortran 2003 要求程序员能够 OPEN 这些默认设备,这与当前“英特尔 Fortran”的行为不兼容。
在 10.0 版中,已经添加了 -assume [no]old_unit_star 编译命令行选项以控制此行为。默认值 -assume old_unit_star 对于不同于设备 5 和 6 的设备,保持当前与过去的行为。如果希望使用 Fortran 2003 的行为,或如果将使用 Fortran 2003 内部模块 ISO_FORTRAN_ENV 及其定义的 INPUT_UNIT 与 OUTPUT_UNIT 常数,请指定 -assume noold_unit_star 让设备*(以及 ACCEPT、PRINT 和 TYPE)使用设备 5(输入)和 6(输出)。
此行为的默认值在将来的发行版中可能会改变。


RECL= 无格式文件的单位
在 10.0 版中,同“英特尔 Fortran”8.x 与 9.x 版中一样,打开文件进行无格式 I/O 时,在 OPEN 中为 RECL= 关键字指定的值是四字节单位,即默认整数的大小。以前的 Fortran 标准规定,RECL= 单位“独立于实现”,但 Fortran 2003“建议”使用单字节。要将无格式 I/O 的 RECL= 单位指定为字节,请使用现有的编译器选项 -assume byterecl。如果您的应用程序使用 ISO_FORTRAN_ENV 内部模块中的 FILE_STORAGE_SIZE 命名参数,则也必须使用此选项。


.XOR。内部函数操作符
作为扩展,“英特尔 Fortran”编译器定义了内部函数操作符 .XOR.。由于内部函数操作符具有与用户自定义操作符不同的优先级,这会导致与相同名称的用户自定义操作符发生冲突。如果您定义自己的操作符 .XOR.,则可以指定 -assume no_old_xor 以禁用编译器将 .XOR. 当作内部函数操作符的定义。


模块过程与变量的全局符号
“英特尔 Fortran”编译器通过将模块名称与过程或变量名称合到一起(以字符串 "_mp_" 分隔),然后应用标准的名称修饰规则,来构造模块过程与变量的全局名称。例如,MYMOD 模块中的 SUB 过程的全局名称为 MYMOD_mp_SUB。此方法可能会与名称中包含 _mp_ 字符串的用户过程产生冲突。如果您的应用程序发生这种冲突,请指定 -assume noold_mod_proc_name 选项,它会将分隔符的大小写切换为与默认名称的大小写相反。您必须为整个应用程序指定相同的选项,以使所有名称保持一致。


数据流 I/O(Fortran 2003 功能)
对于 10.1 版,编译器支持 Fortran 2003 数据流 I/O 功能,它提供按照字节流来读取和写入文件的能力。要启用数据流访问,请打开指定 ACCESS='STREAM' 的文件。READ 与 WRITE 语句支持 POS= 关键字,可以指定文件位置。如需有关详细信息,请参阅“英特尔 Fortran 编译器语言参考”。


RECORDTYPE='STREAMxx' 的行为改变
作为扩展,“英特尔 Fortran”支持 OPEN 语句中的 RECORDTYPE 值 STREAM、STREAM_CR 及 STREAM_LF。在以前的版本中,文档与实现都不正确,并且两者不一致。旧的行为如下:
RECORDTYPE='STREAM'
写入时,将 LF 用作行终结符。输入时,不识别分隔符。
RECORDTYPE='STREAM_CR'
写入时,将 CR-LF 用作行终结符。输入时,不识别分隔符。
RECORDTYPE='STREAM_LF'
写入时,将 CR-LF (Windows)、LF(Linux* 与 Mac OS*)用作行终结符。输入时,不识别分隔符
此外,如果指定了 CARRIAGECONTROL='NONE',则行为已发生改变。
在 10.1 版中,行为改变如下:
RECORDTYPE='STREAM'
不写入或读取分隔符。类似于 Fortran 2003 的数据流 I/O
RECORDTYPE-'STREAM_CR'
将 CR 当作记录分隔符进行写入和读取
RECORDTYPE='STREAM_LF'
将 LF 当作记录分隔符进行写入和读取
按如下所示定义新选项:
RECORDTYPE='STREAM_CRLF'
将 CR-LF 对当作记录分隔符进行读取和写入
CARRIAGECONTROL 不再影响 RECORDTYPE 的行为。
在 Windows 上,默认格式的记录分隔符是 CR-LF;在 Linux 与 Mac OS 上则是 LF。利用这些更改,现在可以使用相同的方式在所有三种操作系统上指定特定的分隔符类型。
如果希望在无须编辑源代码的情况下更改应用程序的运行时行为,则可以定义一个新的环境变量 FOR_FMT_TERMINATOR。此环境变量的值采用以下形式:
mode[:ulist][;mode[:ulist]...]
其中 mode 是 CR、LF 或 CRLF 之一,ulist 是应用该模式的可选设备号范围,例如,2,17-20, 91


Fortran 2003 的新增功能
自 9.1 版最初发行以来,Fortran 2003 标准中已经添加了以下功能。其中某些功能第一次出现在 9.1 版的更新中。如需有关详细信息,请参阅 Intel® Fortran Language Reference(英特尔® Fortran 语言参考)。
ASYNCHRONOUS 属性和语句
BIND(C) 属性和语句
PROTECTED 属性和语句
VALUE 属性和语句
指针对象的 INTENT
赋值语句右侧在形状或长度上存在差异时,重新分配其左侧的可分配变量(要求使用 "assume realloc_lhs" 选项)
FLUSH 语句
WAIT 语句
OPEN 的 ACCESS='STREAM' 关键字值
OPEN 与数据传输语句的 ASYNCHRONOUS 关键字
INQUIRE 与数据传输语句的 ID 关键字
INQUIRE 与数据传输语句的 POS 关键字
INQUIRE 的 PENDING 关键字
用户自定义操作符的重命名
IMPORT 语句
USE 语句的 INTRINSIC 与 NON_INTRINSIC 关键字
ISO_C_BINDING 内部模块
用于 COMMAND_ARGUMENT_COUNT 内部过程的 ISO_FORTRAN_ENV 内部模块(必须使用 /assume:byterecl 与 /assume:noold_unit_star 进行编译,以便得到正确的值)。
GET_COMMAND 内部过程
GET_COMMAND_ARGUMENT 内部过程
GET_ENVIRONMENT_VARIABLE 内部过程
IS_IOSTAT_END 内部过程
IS_IOSTAT_EOR 内部过程
MOVE_ALLOC 内部过程
NEW_LINE 内部过程
SELECTED_CHAR_KIND 内部过程


其它语言功能
如需有关以下新增语言功能的详细信息,请参阅 Intel® Fortran Language Reference(英特尔® Fortran 语言参考)。
ASSUME_ALIGNED 指示
LOOP_COUNT 指示
MEMORYTOUCH 指示
OPTIMIZE 指示
MULT_HIGH_SIGNED 内部过程


用于指定默认记录长度的新环境变量
现提供两个新的函数变量,可用于更改应用程序的运行时行为:FORT_FMT_RECL 与 FORT_UFMT_RECL。
FORT_FMT_RECL 用于给为进行有格式 I/O 而打开的所有 Fortran 设备指定默认的 RECL(记录长度)值。如果定义为十进制无符号整型值,则使用该环境变量值时,仿佛该值是在 RECORDTYPE 不是 'FIXED' 的情况下为 OPEN 的 RECL= 指定的那样。它最常见的用途是更改表式输出的行长度,默认值是 80 列。
FORT_UFMT_RECL 用于给为进行无格式 I/O 而打开的所有 Fortran 设备指定默认的 RECL(记录长度)值。如果定义为十进制无符号整型值,则使用该环境变量值时,仿佛该值是在 RECORDTYPE 不是 'FIXED' 的情况下为 OPEN 的 RECL= 指定的那样。它最常见的用途是更改使用 RECORDTYPE='SEGMENTED' 打开的文件的最大段长,默认值是 2040 字节。


OpenMP* 应用程序的 KMP_AFFINITY 环境变量
KMP_AFFINITY 环境变量可以在 OpenMP* 应用程序中用于指定应该如何将执行线程绑定到系统中的处理器上。此设置的效果是在程序执行期间按照线程的创建顺序,以轮流的方式将每个线程绑定到系统中的处理器核心。KMP_AFFINITY 的值应该采用以下形式:
compact,
其中 是一个非负整数。例如:
compact,1
参数指定连续线程的绑定核心在机器拓扑图(用二叉树表示)中的间隔。级别零表示,对于启用了“英特尔® 超线程技术”的处理器,线程将绑定到处理器的连续线程上下文;如果未启用,则绑定到连续的处理器。从线程上下文到核心,再到封装(处理器),级别依次增加一级。此设置仅有英特尔公司提供的处理器才支持,并且所在的系统必须使用支持线程绑定的操作系统。


改善的并行器与矢量器
此版本采用一个完全重新设计的优化器,在包含内存与循环优化的 O2 与 O3 优化级别,优化器会将并行化(所有体系结构)与矢量化(IA-32 与 Intel® 64 体系结构)的功能集成到一起。
通过采取以下措施可以显著改善性能:
生成更高效的多线程代码
生成更高效的 SIMD 代码
增强的循环转换


新增与改进的高级循环转换优化报告
“循环转换 (HLO) 优化”报告可以告诉您编译器为什么无法对某组循环进行循环交换,并提示是否可通过更改源代码来消除所报告的瓶颈。这些报告现已经过改进,可以提供更详细的信息,并且也更容易理解。


静态验证器
“静态验证器”是一个新的编译器功能,可跨越多个源文件对程序执行静态分析。它可以检测不同种类的缺陷,以及用户代码中语言功能的可疑或不一致的用法,并按照严重程度进行报告。“静态验证器”可以理解 C/C++ 与 Fortran 代码,也可以分析 OpenMP 指示。


Fortran 2003 功能摘要
“英特尔 Fortran 编译器”支持最新版 Fortran 标准(即 Fortran 2003)中的许多新功能。在将来的版本中,将出现更多的 Fortran 2003 功能。当前编译器支持的 Fortran 2003 功能包括:
Fortran 字符集已扩展到包含 8 位 ASCII 字符 ~ \ [ ] ` ^ { } # @
名称最长可达 63 个字符
语句最长可达 256 行
允许方括号 [ ] 代替 (/ /) 用作数组构造器的分隔符
命名为 PARAMETER 常数可以用作复常数的一部分
可分配的衍生类型组分
ASYNCHRONOUS 属性和语句
BIND(C) 属性和语句
PROTECTED 属性和语句
VALUE 属性和语句
VOLATILE 属性和语句
指针对象的 INTENT 属性
赋值语句右侧在形状或长度上存在差异时,重新分配其左侧的可分配变量(要求使用 "assume realloc_lhs" 选项)
在所有的 I/O 语句中,以下数值可以是任何类型:UNIT=、IOSTAT=
FLUSH 语句
WAIT 语句
OPEN 的 ACCESS='STREAM' 关键字
OPEN 与数据传输语句的 ASYNCHRONOUS 关键字
INQUIRE 与数据传输语句的 ID 关键字
数据传输语句的 POS 关键字
INQUIRE 的 PENDING 关键字
以下 OPEN 数值可以是任何类型:RECL=
以下 READ 与 WRITE 数值可以是任何类型:REC=、SIZE=
以下 INQUIRE 数值可以是任何类型:NEXTREC=、NUMBER=、RECL=、SIZE=
在以下情况中允许执行递归 I/O:除自己的内部文件之外,新启动的 I/O 不会修改其它任何内部文件
IEEE 无穷大与 NaN 按照 Fortran 2003 规定的格式化输出进行显示
在 I/O 格式中,如果 P 编辑描述符后面跟一个重复说明符,则编辑描述符后面的逗号可有可无
USE 中用户自定义操作符的重命名
USE 中的 INTRINSIC 与 NON_INTRINSIC 关键字
IMPORT 语句
可分配的虚拟参数
可分配的函数返回值
COMMAND_ARGUMENT_COUNT 内部函数
GET_COMMAND 内部函数
GET_COMMAND_ARGUMENT 内部函数
GET_ENVIRONMENT_VARIABLE 内部函数
IS_IOSTAT_END 内部函数
IS_IOSTAT_EOR 内部函数
MOVE_ALLOC 内部函数
NEW_LINE 内部函数
SELECTED_CHAR_KIND 内部函数
以下内部函数可接受可选的 KIND= 参数:ACHAR、COUNT、IACHAR、ICHAR、INDEX、LBOUND、LEN、LEN_TRIM、MAXLOC、MINLOC、 SCAN、SHAPE、SIZE、UBOUND、VERIFY
ISO_C_BINDING 内部模块
ISO_FORTRAN_ENV 内部模块

在此发行版中,启用“静态验证器”时,不会调用链接器,因此不会产生可执行文件或静态/动态链接库,作为调用“静态验证器”的结果而产生的目标文件无效,不应用于生成实际的可执行文件或静态/动态链接库。当前用法模型是添加“静态验证器”作为替代性的构建选项,以产生诊断报告。
“静态验证器”不能与交叉文件过程间优化 (/Qipo) 结合使用。
如需有关详细信息,请参阅光盘文档中关于 Building Applications > Error Handling > Handling Compile Time Errors > using Static Verification Diagnostic Options(构建应用程序 > 错误处理 > 处理编译时错误 > 使用静态验证诊断选项)的部分。


(http://blog.sina.com.cn/s/blog_51ffcfc301009utu.html~type=v5_one&label=rela_nextarticle )

Wednesday, May 13, 2009

intel Fortran 编译器 10.1 Linux*版入门 2

英特尔 ® Fortran 编译器 10.1 Linux* 版入门指南、安装指南和发行说明[2]
原始文档下载地址
http://www.intel.com/cd/software/products/apac/zho/358463.htm

英特尔® Fortran 编译器 10.1 Linux* 版安装指南

目录
简介
系统要求
获取编译器与工具
安装编译器与工具
设置编译器环境
卸载编译器与工具
获取技术支持
免责声明与法律信息

简介
本文介绍如何安装与配置“英特尔® Fortran 编译器 10.1 Linux* 版”以便使用。安装过程分为多个步骤。在开始安装之前,请通读本文,然后依次执行各个步骤。如需有关产品内容的详细信息,包括新增与改进的功能,请参阅单独的发行说明
如果安装了旧版“英特尔 Fortran 编译器 Linux 版”,则在安装此版本之前,并不需要卸载它。如果选择卸载旧版本,则在安装此版本之前或之后都可以卸载。

系统要求
处理器术语
英特尔® 编译器支持三种平台:处理器与操作系统类型的常规组合。这部分介绍英特尔在其文档、安装过程以及技术支持网站中用于描述平台的术语。

IA-32
IA-32 体系结构指基于以下处理器且运行 32 位操作系统 ("Linux x86") 的系统:通常与英特尔奔腾® II 处理器兼容的 32 位处理器(例如,英特尔® 奔腾® 4 处理器或英特尔® 至强® 处理器),或是其它厂商生产的支持相同指令集的处理器。

Intel® 64
Intel® 64 体系结构指基于带 64 位体系结构扩展的 IA-32 体系结构处理器(例如,英特尔® 酷睿™2 处理器系列)且运行 64 位操作系统 ("Linux x86_64") 的系统。如果系统运行 32 位版的 Linux 操作系统,则适用 IA-32 体系结构。针对 Intel® 64 体系结构应用程序的英特尔编译器还支持以下系统:基于 AMD* Athlon64* 与 Opteron* 处理器,并且运行 64 位操作系统的系统。
IA-64
指基于英特尔® 安腾® 2 处理器且运行 64 位操作系统的系统。

本机与跨平台开发
术语“本机”是指构建一个应用程序,它将在构建时使用的相同平台上运行;例如,在 IA-32 体系结构上构建要在 IA-32 体系结构上运行的应用程序。术语“跨平台”或“交叉编译”是指构建一个应用程序,它运行时使用的平台与构建时使用的平台属于不同的类型;例如,在 IA-32 体系结构上构建要在 IA-64 体系结构上运行的应用程序。并非所有的跨平台开发组合都受支持,有些组合可能需要安装可选的工具与函数库。
下表介绍支持的编译主机(构建应用程序的系统)与应用程序目标(运行应用程序的系统)组合。
IA-32 体系结构主机
支持的目标:IA-32
Intel® 64 体系结构主机
支持的目标:IA-32 与 Intel® 64
IA-64 体系结构主机
支持的目标:IA-64
备注:开发与主机不同的目标时,可能需要从 Linux 发行包中安装可选的函数库组件。
备注:“英特尔® 集群 OpenMP*”是单独授予许可证的功能,与编译器的系统要求也不相同。如需有关详细信息,请参阅“英特尔集群 OpenMP”文档。

开发 IA-32 体系结构应用程序的要求

  • 基于 IA-32 体系结构处理器(最低 450 MHz 主频的英特尔奔腾® II 处理器,或更高级的处理器 - 建议配备英特尔® 酷睿™2 处理器系列或英特尔® 奔腾® 4 处理器)、Intel® 64 体系结构处理器的系统,或是基于 AMD* Athlon* 或 AMD Opteron* 处理器的系统
  • 512 MB 内存(建议配备 1GB)。
  • 100 MB 的磁盘空间,另外还需要 200 MB 空间,用于存放安装过程中下载的文件与临时文件。
  • 以下 Linux 版本(这是经英特尔测试过的操作系统版本的列表;其它版本可能会,也可能不会正常工作,因此不建议使用 - 如有任何疑问,请与“英特尔® 首要支持”联系)之一:
    Asianux* 3.0
    Debian* 4.0
    Fedora* 7
    Red Hat Enterprise Linux* 3, 4, 5
    SUSE LINUX Enterprise Server* 9, 10
    TurboLinux* 11
    Ubuntu* 7.04
  • 安装了“Linux 开发工具”组件,包括 gcc 3.2.3、3.3、3.4、4.1、4.11、g++ 以及相关工具
  • 提供 libstdc++.so.5 的 Linux 组件 compat-libstdc++

针对 Intel® 64 体系结构系统或针对 AMD* Opteron* 处理器开发应用程序时的要求

  • 基于 IA-32 或 Intel® 64 体系结构处理器(建议配备英特尔® 酷睿™2 处理器系列或英特尔® 至强® 处理器),或是基于 AMD Opteron 处理器的系统
  • 512 MB 内存(建议配备 1GB)
  • 300 MB 的空闲硬盘空间,另外还需要 300 MB 空间,用于存放安装过程中下载的文件与临时文件。
  • 100 MB 硬盘空间,用于虚拟内存页面文件。确保使用的虚拟内存量至少达到针对安装的 Linux 操作系统版本所建议的最小值
  • 以下 Linux 版本(这是经英特尔测试过的操作系统版本的列表;其它版本可能会,也可能不会正常工作,因此不建议使用 - 如有任何疑问,请与“英特尔® 首要支持”联系)之一:
    Asianux* 3.0
    Debian* 4.0
    Fedora* 7
    Red Hat Enterprise Linux* 3, 4, 5
    SGI ProPack* 5
    SUSE LINUX Enterprise Server* 9, 10
    TurboLinux* 11
    Ubuntu* 7.04
  • 安装了“Linux 开发工具”组件,包括 gcc 3.2.3、3.3、3.4、4.1、4.11、g++ 以及相关工具
  • 提供 libstdc++.so.5 的 Linux 组件 compat-libstdc++


开发 IA-64 体系结构应用程序的要求

  • 基于英特尔® 安腾® 2 处理器的系统。
  • 512 MB 内存(建议配备 1 GB)。
  • 150 MB 的磁盘空间,另外还需要 200 MB 空间,用于存放安装过程中下载的文件与临时文件。
  • 以下 Linux 版本(这是经英特尔测试过的操作系统版本的列表;其它版本可能会,也可能不会正常工作,因此不建议使用 - 如有任何疑问,请与“英特尔® 首要支持”联系)之一:
    Asianux* 3.0
    Debian* 4.0
    Red Hat Enterprise Linux* 3, 4, 5
    SUSE LINUX Enterprise Server* 9, 10
    TurboLinux* 11
  • 安装了“Linux 开发工具”组件,包括 gcc 3.2.3、3.3、3.4、4.1、4.11、g++ 以及相关工具
  • 提供 libstdc++.so.5 的 Linux 组件 compat-libstdc++


关于 gcc 版本的说明
英特尔编译器使用许多不同的 Linux 操作系统版本(具有不同版本的 gcc)进行过测试。某些 Linux 版本可能包含与已经测试过的版本不同的头文件,这可能会导致问题。您使用的 glibc 版本必须同使用的 gcc 的版本保持一致。
备注:

  • 使用 -O3、-ipo 及 -openmp 等高级优化选项编译非常庞大的源文件(几千行)时,所需的内存量可能会明显大很多。
  • 上面的处理器型号名称列表并非毫无遗漏 - 与上面列出的那些处理器支持相同指令集的其它处理器型号应该也可以正常使用。如果有关于特定处理器型号的问题,请与“英特尔® 首要支持”联系。
  • 有些优化选项在运行应用程序的处理器类型方面存在限制。如需有关详细信息,请参阅这些选项的文档。


获取编译器与工具
在安装编译器与工具之前,应该检查英特尔® 软件开发产品注册中心的产品下载 部分,确认是否有新的版本或更新。光盘版或电子下载许可证邮件中列出的版本可能并不是最新版本。要从“英特尔® 首要支持”下载并安装编译器,首先必须按照技术支持下的说明进行注册,以便获取技术支持。
在“英特尔® 软件开发产品注册中心”,此编译器以多种不同的软件包形式提供,以满足您的各种需要。这些软件包的文件名与说明如下:
l_fc_x_10.1.xxx.tar.gz
适用于开发 IA-32 与 Intel® 64 体系结构应用程序的完整产品,包含“英特尔 Fortran 编译器”与“英特尔调试器”。针对 IA-32 或 Intel® 64 体系结构系统进行开发的新用户应该选择它。
l_fc_x_10.1.xxx_ia32.tar.gz
仅适用于开发 IA-32 体系结构应用程序的“编译器”与“调试器”。如果要更新以前安装的 10.1 编译器,并且是针对 IA-32 体系结构系统进行开发,请选择它。
l_fc_x_10.1.xxx_intel64.tar.gz
仅适用于开发 Intel® 64 体系结构应用程序的“编译器”与“调试器”。如果要更新以前安装的 10.1 编译器,并且针对 Intel® 64 体系结构系统进行开发,请选择它。
l_fc_x_10.1.xxx_ia64.tar.gz
仅适用于开发 IA-64 体系结构应用程序的“编译器”与“调试器”。如果要针对 IA-64 体系结构系统进行开发,并且要进行全新安装或更新以前的 10.1 编译器,请选择它。
其中 "x" 可能会有所不同。
如果您拥有“英特尔® Fortran 编译器专业版”许可证,则“英特尔® Math Kernel Library”需要单独下载与安装。如需有关详细信息,请参阅该组件的“安装指南”与/或“发行说明”。

安装编译器与工具
如果在首次安装或注册过程中遇到困难,请访问 https://registrationcenter.intel.com/support 以便从英特尔获取帮助。
在本文的其它部分,使用 表示的默认安装目录是:
/opt/intel/fc/10.1.xxx(针对 IA-32 与 IA-64)
/opt/intel/fce/10.1.xxx(针对 Intel® 64)
/opt/intel/idb/10.1.xxx(针对 IA-32 与 IA-64)
/opt/intel/idbe/10.1.xxx(针对 Intel® 64)
请注意,路径包括含更新号的完整版本号。这意味着您可以在系统上保持安装多个版本的编译器。如果不希望保留多个版本,则在安装新版本之前或之后都可以删除旧目录。
如果同时安装“英特尔 C++ 编译器”与“英特尔 Fortran 编译器”,它们都提供“英特尔调试器”。如果 C++ 与 Fortran 安装程序的更新号不同,则“英特尔调试器”的更新号也会不同。如果安装同时发行的这两种语言的编译器,我们建议为 Fortran 编译器选择 Custom Install(自定义安装);由于调试器相同,请勿再次安装“英特尔调试器”。从英特尔 C++ 软件包安装调试器时,会提供 Eclipse* 集成。
执行以下步骤来安装编译器。

  • 将编译器软件包解压到您拥有写入访问权限的目录。

> tar -xvf l_fc_x_10.1.xxx.tar

>tar -zxvf l_fc_x_10.1.xxx.tar.gz

  • 运行安装脚本

在解开 tar 文件的目录中,执行安装脚本。

> cd l_fc_x_10.1.xxx

> ./install.sh

  • 如 果不是作为 root 登录,安装脚本将询问是要作为 root 进行安装、使用 sudo 作为 root 进行安装,还是不使用 root 权限进行安装。建议作为 root 进行安装(如果有权限,请使用 sudo),这将更新系统 RPM 数据库。如果要安装到私有区域,请使用 install as current user(作为当前用户进行安装)选项。
  • 安装脚本将显示一系列选项,供您开始安装或查看文档。输入 1 并按 Enter 键开始安装编译器。
  • 随后安装脚本将提示输入“英特尔 Fortran 编译器 Linux 版”的序列号。序列号已经在购买产品时提供给您,它或是在当地经销商发给您的电子邮件中,或是在光盘包装盒的贴纸上。您也可以选择输入指向现有许可证文件的路径。作出选择,然后按照提示执行。
  • 随后,安装脚本会执行一些必备条件检查,并显示已经安装的英特尔软件开发工具(如果有),然后提供 Typical Install(典型安装)与 Custom Install(自定义安装)让您选择。建议选择 Typical Install(典型安装)- 输入 1 并按 Enter 键。
  • 再次按 Enter 键以显示许可协议。显示许可协议之后,安装脚本会提示您接受还是拒绝许可协议。如果接受许可协议,请输入 accept(接受)并按 Enter 键。如果拒绝许可协议,请输入 reject(决绝)并按 Enter 键以结束安装过程。
  • 随后安装过程将继续 - 安装脚本可能会提示您接受其它一些许可协议、指定安装路径或是按 Enter 键继续执行安装步骤。
  • 在安装过程结束时,安装脚本将提示您注册“英特尔® 首要支持”。注册之后,便可以在技术支持期(对于购买的带技术支持的许可证,通常是一年)内享受“英特尔® 首要支持”的所有服务,包括所有的更新与新版本。如果不进行注册,您将无法安装或使用产品更新。输入电子邮件地址,看到提示时进行注册。(如果已经拥有“ 英特尔® 首要支持”帐户,请输入注册的电子邮件地址)。随后您将收到一封包含注册信息(含初始密码)的电子邮件。如果不希望注册,或是已经注册,请依次按 x 与 Enter 键退出。
  • 注册之后,安装脚本退出。


RPM 4.0.2 与 RPM 4.1 的安装警告


RPM 4.0.2 无法安装到非默认目录。这个问题在 RPM 4.0.3 中已经解决。RPM 4.1 无法安装到非默认目录。这个问题在 RPM 4.11 到 4.2 中已经解决。


安装英特尔® 许可证服务器


如果有流动型、限制用户数或节点锁定型许可证,则许可证必须结合针对英特尔软件的 FLEXlm* 许可证服务器(英特尔® 许可证服务器)一起安装,该服务器在许多主流平台上都有提供。该服务器可以安装在本地网络中可访问的任何支持的平台上。编译器光盘包含针对多个 Linux 版本的许可证服务器。如果没有光盘,或是需要针对其它平台的许可证服务器,则可以从英特尔® 软件开发产品注册中心下载许可证管理器。请注意,并非在支持编译器本身的所有平台上都提供“英特尔许可证服务器”。


在运行 SGI ProPack* 的 SGI* Altix* 系统上安装英特尔许可证服务器


如果要在运行 SGI ProPack* 的 SGI* Altix* 系统上安装“英特尔许可证服务器”,请按照以下操作说明执行,以确保在分区集群环境中正确操作:

  • 英特尔® 软件开发产品注册中心获取适当的许可证服务器。要使用的文件是 flexlm.Linux.ia64.EL3_SGIAltix.tar.Z。
  • 按照编译器软件包中 flexlm_ug.pdf 文档文件中的操作说明安装许可证服务器。
  • 要确定检索许可证文件所需的“主机标识”,请登录到要运行许可证服务器的分区,将默认值设置 (cd) 为安装了“英特尔许可证服务器”的目录(默认为 /opt/intel/flexlm),并执行以下命令:
    ./lmhostid
  • 如果还没有许可证,请访问“英特尔® 软件开发产品注册中心”,按上节所述注册您的产品。如果已经拥有许可证,但主机标识不正确,请将问题提交到英特尔® 首要支持,提供许可证文件的序列号、运行 lmhostid 的结果、表明这是流动型许可证还是节点锁定型许可证的指示,以及为新主机标识生成新许可证的请求。务必从“Linux* 操作系统”下拉列表中选择 SGI* Altix* ProPack*,指定这是针对 Altix 系统。英特尔客户支持小组将为您生成含正确主机标识的新许可证。

无提示安装


“英特尔 Fortran 编译器”可以进行自动安装,而不必就所作的提示输入响应信息。这种类型的安装会显示一些输出结果,但无需用户交互。这种安装的步骤如下:

  • 为所提供的无提示安装配置模板创建一份本地副本。这在光盘上有提供,即 data/silentInstallConfigFile.ini。如果使用下载的产品副本,请按上文所述将它进行 untar,您将在 data 文件夹中找到该文件。例如:
    cp /mnt/cdrom/data/SilentInstallConfigFile.ini /home/my_account/my_silent.ini
  • 编辑配置文件的本地副本以接受许可协议,并且允许根据需要覆盖安装的现有程序。进行适当的本地更改以设置安装目标目录等首选项。对于可能需要更改的每个字段,模板文件都包含相关的说明。
  • 根据需要切换为 root 或超级用户帐户。
  • 运行安装程序如下:
    /mnt/cdrom/data/install_fc.sh --run --silent /home/my_account/my_silent.ini
    对于下载的软件包,请使用指向 data/install_fc.sh 的适当路径来确定未解压的安装程序的位置。
    如果自定义的配置文件中有错误或疏漏,只需纠正这些错误并重新运行安装程序即可。


设置编译器环境


“英特尔 Fortran 编译器 10.1 Linux 版”产品中的程序依赖于 PATH 与 LD_LIBRARY_PATH 环境变量。安装脚本 (install.sh) 创建编译器环境脚本文件 (ifortvars.sh/idbvars.sh) 来设置这些变量。强烈建议将这些脚本文件添加到登录脚本(.login 文件)中。在 ".login" 文件中设置这些变量之后,便不再需要每次会话都运行这些脚本文件。
对脚本使用 source 命令以设置编译器环境:
> source /bin/ifortvars.sh(.csh)以使用 ifort
> source /bin/idbvars.sh(.csh)以使用 idb
安装程序还会创建 /bin/ifort.cfg 编译器配置文件,它包含所有编译都需要的常用设置。您可以编辑这些文件以添加额外的默认选项。备注:如果安装编译器更新包,则需要保存配置文件;如果已经修改它,请使用另一个文件名进行保存,以免安装程序覆盖掉已修改的文件。
如果在运行编译器方面遇到任何问题,请确保许可证目录中存在有效的许可证文件 (*.lic)。默认情况下,这是 /opt/intel/licenses。编译器使用 INTEL_LICENSE_FILE 环境变量来确定许可证文件的位置。如果仍然有问题,请将问题提交给“英特尔® 首要支持”。如需有关详细信息,请参阅本文的“技术支持”部分。
安装本产品之后,如果尚未注册,请进行注册以获取技术支持。如需了解注册操作说明,请参阅下文的获取技术支持


卸载编译器与工具


请按照以下步骤卸载英特尔“编译器”与“调试器”。

  • 如果安装时使用的是 root 帐户,则将需要作为 root 登录
  • 要卸载编译器:

/bin/uninstall.sh

或者,如果将编译器安装到了默认的目录,请使用

/opt/intel/fc/10.1.xxx/bin/uninstall.sh 或

/opt/intel/fce/10.1.xxx/bin/uninstall.sh(在 Intel® 64 体系结构系统上)

  • 要卸载调试器:

/bin/uninstall.sh

或者,如果将调试器安装到了默认的目录,请使用

/opt/intel/idb/10.1.xxx/bin/uninstall.sh 或

/opt/intel/idbe/10.1.xxx/bin/uninstall.sh(在 Intel® 64 体系结构系统上)


获取技术支持


如果未在安装过程中注册编译器,请访问英特尔® 软件开发产品注册中心进行注册。注册之后,在技术支持服务期间,您可以获取免费技术支持、产品更新以及升级。
如需有关如何找到“技术支持”、“产品更新”、“用户论坛”、常见问题、提示与技巧的信息,以及其它技术支持信息,请访问:http://www.intel.com/software/products/support/flin
备注:如果分销商提供本产品的技术支持,请与他们而不是英特尔联系技术支持事宜。


免责声明与法律信息


本文所含信息专门针对英特尔(R) 产品提供。本文并未授予任何知识产权的许可证,无论是明确、暗示、禁止翻供还是其它任何形式。除这些产品的“英特尔销售条款”之规定外,英特尔概不承担任何其它义务,对于英特尔产品的销售与/或使用(包括适合特定用途、适销性或不侵犯任何专利权、版权或其它知识产权),英特尔不作任何明确或暗示的担保,也不承担任何赔偿责任。未经英特尔公司书面同意,不应将英特尔产品用于任何在发生故障时可能会造成人身伤亡的用途,英特尔产品并未针对这些用途而设计,也不旨在用于这些用途。
英特尔随时可能更改技术规格与产品说明,如确有更改,恕不另行通知。标有“保留”或“未定义”字样的任何功能或指令,其存在性与特性均不确定,设计人员切勿对此有所依赖。英特尔保留这些供将来定义之用,对于因将来对它们的更改而导致的任何冲突或不兼容现象,英特尔概不承担任何责任。本文所含信息可随时更改而不另行通知。不应依赖这些信息进行最终设计决策。
本文所述产品可能包含一些设计缺陷或错误(统称错误),导致产品与发布的规格不符。目前已确定的错误可应客户要求提供。
在订购产品之前,请与当地的英特尔销售办事处或分销商联系,以获取最新规格。
对于本文中引用的并且包含订单号的文档,或是其它的英特尔文档,均可通过拨打 1-800-548-4725 或访问英特尔网站来获取。
赛扬、迅驰、英特尔、英特尔徽标、Intel386、Intel486、英特尔酷睿、安腾、MMX、奔腾、VTune 以及至强是英特尔公司在美国以及其它国家或地区的商标。
* 其它品名与品牌可能是属于其它公司的资产。
(C) 2007 英特尔公司版权所有。保留所有权利。


(http://blog.sina.com.cn/s/blog_51ffcfc301009utr.html~type=v5_one&label=rela_nextarticle)

intel Fortran 编译器 10.1 Linux*版入门 1

英特尔 ® Fortran 编译器 10.1 Linux* 版入门指南、安装指南和发行说明[1]
原始文档下载地址
http://www.intel.com/cd/software/products/apac/zho/358463.htm

英特尔(R) Fortran 编译器 Linux* 版入门
文档编号:307058-004CN

“英特尔(R) Fortran 编译器 10.1 版”可以在 Linux* 系统上编译 Fortran 源文件。该编译器在 IA-32、Intel(R) 64 及 IA-64 体系结构上都受到支持。
“英特尔 Fortran 编译器”在 Linux 系统上仅从命令行中运行。
“英特尔 Fortran 编译器”的默认 Root 安装路径是 /opt/intel/fc/10.1.xxx,其中 xxx 代表 3 位数字的内部版本号。在 Intel(R) 64 体系结构上,路径是 /opt/intel/fce/10.1.xxx。本文使用 一词指代这个默认的安装路径。

确定文档位置
编译器文档安装在 /doc/ 中。如需了解每个文档组件的简短说明,请参阅“文档索引”(Doc_Index.htm)。

在命令行上使用编译器
在命令行环境中使用编译器之前,先设置适当的环境变量。通过给编译器环境脚本 ifortvars.sh(或 ifortvars.csh)使用 "source" 命令,可以做到这一点:
source /opt/intel/fc/10.1.xxx/bin/ifortvars.sh
要编译 Fortran 源文件(例如,my_source_file.f90),请使用以下命令:
ifort my_source_file.f90
成功编译之后,会在当前目录下创建一个可执行文件 a.out。
英特尔编译器还包含手册页。给环境脚本使用 source 命令之后,可以打开手册页以查看完整的编译器选项列表:
man ifort
通过使用 -help 选项调用编译器,可以从命令行查看编译器选项的摘要:
ifort -help

免责声明与法律信息
本文所含信息专门针对英特尔(R) 产品提供。本文并未授予任何知识产权的许可证,无论是明确、暗示、禁止翻供还是其它任何形式。除这些产品的“英特尔销售条款”之规定外,英特尔概不承担任何其它义务,对于英特尔产品的销售与/或使用(包括适合特定用途、适销性或不侵犯任何专利权、版权或其它知识产权),英特尔不作任何明确或暗示的担保,也不承担任何赔偿责任。未经英特尔公司书面同意,不应将英特尔产品用于任何在发生故障时可能会造成人身伤亡的用途,英特尔产品并未针对这些用途而设计,也不旨在用于这些用途。英特尔随时可能更改技术规格与产品说明,如确有更改,恕不另行通知。标有“保留”或“未定义”字样的任何功能或指令,其存在性与特性均不确定,设计人员切勿对此有所依赖。英特尔保留这些供将来定义之用,对于因将来对它们的更改而导致的任何冲突或不兼容现象,英特尔概不承担任何责任。本文所含信息可随时更改而不另行通知。不应依赖这些信息进行最终设计决策。
本文所述产品可能包含一些设计缺陷或错误(统称错误),导致产品与发布的规格不符。目前已确定的错误可应客户要求提供。
在订购产品之前,请与当地的英特尔销售办事处或分销商联系,以获取最新规格。
对于本文中引用的并且包含订单号的文档,或是其它的英特尔文档,均可通过拨打 1-800-548-4725 或访问英特尔网站来获取。
英特尔处理器编号并非衡量性能的标准。处理器编号用于区分每种处理器系列内不同处理器的特性;对于不同的处理器系列,则不具区分作用。如需有关详细信息,请访问 http://www.intel.com/products/processor_number。
BunnyPeople、赛扬、Celeron Inside、迅驰、迅驰徽标、Core Inside、FlashFile、i960、InstantIP、英特尔、英特尔徽标、Intel386、Intel486、Intel740、 IntelDX2、IntelDX4、IntelSX2、英特尔酷睿、Intel Inside、Intel Inside 徽标、“英特尔。超越未来。”、“英特尔。超越未来。”徽标、Intel NetBurst、Intel NetMerge、英特尔网擎、Intel SingleDriver、Intel SpeedStep、Intel StrataFlash、英特尔欢跃、英特尔博锐、Intel XScale、IPLink、安腾、Itanium Inside、MCS、MMX、Oplus、OverDrive、PDCharm、奔腾、Pentium Inside、skoool、Sound Mark、The Journey Inside、VTune、至强以及 Xeon Inside 均为英特尔公司在美国以及其它国家或地区的商标。
* 其它品名与品牌可能是属于其它公司的资产。
(C) 1996 - 2007 英特尔公司版权所有。保留所有权利。

(http://blog.sina.com.cn/s/blog_51ffcfc301009utq.html~type=v5_one&label=rela_prevarticle)

Install Intel Fortran 11.0.083 under Ubuntu-8.10-desktop-i386

  • Download free/uncommencial Intel Fortran softerware from intel website: http://www.intel.com/software/products/global/eval.htm. Also, you should register with e-mail address, then you can get a license file, which intel send to your email.
  • Some steps before install Intel Fortran Complier

sudo apt-get install build-essential

sudo apt-get install libstdc++5

  • Install Intel Fortran Complier

$tar -xzf filename.tgz

$ cd (your installed folder path)/l_cprof_p_11.0.083/

$ ./install.sh

There 7 stpes during the install. Just follow one by one.

  • After install, set Environment Parameters in file (./bashrc)

Add to it the end of the file (./bashrc):

source /opt/intel/Compiler/11.0/083/bin/ia32/ifortvars_ia32.sh

  • Check

$ source /opt/intel/Compiler/11.0/083/bin/ia32/ifortvars_ia32.sh

$ifort --version

if you can see :

"ifort (IFORT) 11.0 20090318Copyright (C) 1985-2009 Intel Corporation. All rights reserved."

Means successful.

  • Uninstall Intel Fortran

$/opt/intel/Compiler/11.0/083/bin/ia32/uninstall_cprof.sh

$cd opt/

$sudo rm -rf intel

在ubuntu 8.04 LTS上安装 intel fortran 10.1.015 (ZZ)

http://blog.sina.com.cn/s/blog_51ffcfc301009utj.html~type=v5_one&label=rela_prevarticle

a 到intel 网站下载intel fortran 10 的编译器

b 安装其他需要事先安装的程序
sudo apt-get install build-essential
sudo apt-get install libstdc++5

按照intel官方的安装方式在这个版本的ubutu版本上不能进行,需要其他方式安装,以下方式是照网上查到的信息编辑修改的,按照 10.1.008 版本编译器安装步骤记录的,如果是其他步骤,需自行调整版本编号等信息

a.安装过程中需要 alien 工具将 RPM 包转换为 debian 安装包,如果没有,执行代码:
sudo apt-get install alien

安装。

b、安装软件包
代码:
tar xzvf l_fc_p_10.1.008.tar.gz

c.编译器安装
代码:
cd l_fc_p_10.1.008/data
sudo alien -cv intel-ifort101008-10.1.008-1.i386.rpm
sudo dpkg -i intel-ifort101008_10.1.008-2_i386.deb

d、LICENSE 文件
创建 /opt/intel/licenses 目录
代码:
sudo mkdir -p /opt/intel/licenses

把邮件附件中的文件拷贝到这个目录下
代码:
sudo cp /your/license/path/NCOM_L_CMP_FOR_NDXX-WMM6JDJF.lic /opt/intel/licenses

e、设置环境变量
代码:
cd /opt/intel/fc/10.1.008/bin

使用 perl 修改文件中的内容(注意第二行的 \/opt\/intel\/fc\/10.1.008/ 表示安装路径,其他版本按照实际情况调整)

代码:
sudo perl -pi -w -e 's/!\/bin\/sh/!\/bin\/bash/g;' *
sudo perl -pi -w -e 's//\/opt\/intel\/fc\/10.1.008/g;' *

执行脚本文件代码:
. ./ifort.sh

如果希望每次打开终端都能够自动设置,将
代码:
source /opt/intel/fc/10.1.008/bin/ifortvars.sh
加入到 ~/.bashrc 文件末尾。

f、验证安装
执行命令
ifort --version

应当看到如下信息:
代码:
ifort (IFORT) 10.1 20070913
Copyright (C) 1985-2007 Intel Corporation. All rights reserved.

如果一切正常,表明安装成功。

g、卸载卸载过程还是比较简单的。
代码:
sudo apt-get remove intel-icc101008
sudo apt-get remove intel-ifort101008

或者
/opt/intel/Compiler/11.0/083/bin/ia32/uninstall_cprof.sh

编辑 ~/.bashrc 文件,删除代码
代码:
source /opt/intel/cc/10.1.008/bin/iccvars.sh
source /opt/intel/fc/10.1.008/bin/ifortvars.sh

恩,终于可以用了哦,呵呵

intel 的编译器效率据说要高些,虽然个人没有测试过,不过生产硬件的厂商提供的编译器快点有一定道理以下网址有intel 官方的中文版入门指南、安装指南和发行说明,会在博客其他页贴出(郁闷,这里不能上传附件哦):http://www.intel.com/cd/software/products/apac/zho/358463.htm

Install Interl Fortran in linux (ubuntu)

Interl fortran编译器的linux安装

  1. Download an uncommercial/free Intle Fortran from: http://www.intel.com/cd/software/products/asmo-na/eng/340679.htm
  2. Install it following the guide from: http://registrationcenter-download.intel.com/irc_nas/1208/l_fc_p_10.1.018_INSTALL.htm
  3. Set environment parameters: Add source /opt/intel/fc/10.0.023/bin/ifortvars.sh To the file ( .bashrc). (the path of ifortvars.sh depends on where you install it)
  • File .bashrc is a hidden file. It can be found in "/home/" by pushing"Ctrl+H" to see it.

Tuesday, May 12, 2009

Ubuntu Linux root password - default password (zz)

Q. I have just installed Ubuntu Linux. But, what is the default root password? I can only login as a normal user.

A. This is the mystery for most users - you didn't set a root password, so what is it?
The root user can do anything as this a/c has full access to system. So using root account for daily work can be dangerous.

To be frank root a/c is locked by default under Ubuntu Linux. Therefore, you cannot login as root or use su - command to become superuser.

To run all administrative command use sudo command. sudo allows a permitted user to execute a command as the superuser or another user. Ubuntu setup your default account (the one created during installation) to run all administrative commands.

For example create a new user called bar, you need to type sudo command as follows:
$ sudo adduser barPassword:
When sudo asks for a password, it needs YOUR OWN Password; this means that a root password is not needed.

Here are few more examples.
Task: Start / stop / restart services stored in /etc/init.d/ directory
$ sudo /etc/init.d/ssh stop$ sudo /etc/init.d/networking restart
Task: Avoid typing sudo each and every time

Note that this is not recommended until and unless you are an expert and aware of what you are typing:
$ sudo -i

Above command will start /bin/bash as a root shell so that you can enter a root user command w/o using sudo.

http://www.cyberciti.biz/faq/ubuntu-linux-root-password-default-password/

Linux Tips

1. tar decompress (解压缩) problem: "operation not permitted"

  • Donot put the file to be decompressed in the folder in XP System or in the folder shared with XP Sytem. Move the file to the folder in the Linux system, and decompress it. Linux文件系统类型一般采用ext2,而Win32的文件类型一般是Fat32或ntfs,它们对文件的存储和组织方式是不同的,甚至文件的属性信息也是不同的。当你把一个原先在ext2文件系统上的gz文件解压缩到fat32文件系统上时,就会出现如上的提示信息,常见的提示信息还有: Cannot change ownership to uid 500, gid 100: Operation not permitted。 如果你在非fat32分区下(如ext2)解压缩这个文件,应该不会出现你所说的提示信息了。

2. cd command: "Bash...No such file or directory"

  • cd followed with full pathes of the folder, such as "home/..../..."

3. Install G++ in ubuntu

  • 首先确定你已经联网而且插入ununtu安装或者安装包,
  • 然后在终端里面执行
  • sudo apt-get install build-essential
  • 输入root的密码后回车

4. "missing: libstdc++.so.5", install 安装

  • sudo apt-get install libstdc++5
5. Check CPU information
  • cat /proc/cpuinfo
6. how to check linux kernel is 32 bit or 64 bit
  • Usually it is in the name of the kernel.

    Code:
    >$ uname -m
    x86_64
    Tells me I am running a 64bit kernel or check a binary file on the system if it is 64bit good chance you are running 64bit.

    Code:
    >$ file /usr/bin/file
    /usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.8,
7. Search a file in Linux
  • $ find / -name 'program.c' 2>/dev/null
    $ find / -name 'program.c' 2>errors.txt
    /

    Start searching from the root directory (i.e / directory)
    -name

    Given search text is the filename rather than any other attribute of a file
    'program.c'

    Search text that we have entered. Always enclose the filename in single quotes.. why to do this is complex.. so simply do so.

    Note : 2>/dev/null is not related to find tool as such. 2 indicates the error stream in Linux, and /dev/null is the device where anything you send simply disappears. So 2>/dev/null in this case means that while finding for the files, in case any error messages pop up simply send them to /dev/null i.e. simply discard all error messages.

  • $ find /home/david -name 'index*'
    $ find /home/david -iname 'index*'
    The 1st command would find files having the letters index as the beginning of the file name. The search would be started in the directory /home/david and carry on within that directory and its subdirectories only.
    The 2nd command would search for the same, but the case of the filename wouldn't be considered. So all files starting with any combination of letters in upper and lower case such as INDEX or indEX or index would be returned.

    -

    $ find -name met*
    The above command would start searching for the files that begin with the letters 'met' within the current directory and the directories that are present within the current directory. Since the directory is not specified as the the second parameter, Linux defaults to using the current directory as the one to start the search in.

    -

    $ find /mp3collection -name '*.mp3' -size -5000k
    $ find / -size +10000k
    The 1st command would find within a directory called /mp3collection, only those mp3 files that have a size less than 5000 Kilobytes ( <> 10MB)

    -

    $ find /home/david -amin -10 -name '*.c'
    $ find /home/david -atime -2 -name '*.c'
    $ find /home/david -mmin -10 -name '*.c'
    $ find /home/david -mtime -2 -name '*.c'

    The 1st commmand searches for those files that are present in the directory /home/david and its subdirectoires which end in .c and which have been accessed in the last 10 minutes.
    The 2nd command does the same but searches for those files that have been accessed in the last 10 hours.
    The 3rd and the 4th commands do the same as the 1st and 2nd commands but they search for modified files rather than accessed files. Only if the contents of the files have been modified, would their names be returned in the search results.

    -

    $ find / -mount -name 'win*'
    This command searches for files starting with the letters 'win' in their filenames. The only difference is that the mounted filesystems would not be searched for this time. This is useful when you have your Windows partitions mounted by default. And a search for 'win' might return many files on those partitions, which you may not be really interested in. This is only one use of -mount parameter.

    -

    $ find /mp3-collection -name 'Metallica*' -and -size +10000k
    $ find /mp3-collection -size +10000k ! -name "Metallica*"
    $ find /mp3-collection -name 'Metallica*' -or -size +10000k
    Boolean operators such as AND, OR and NOT make find an extremely useful tool.
    The 1st command searches within the directory /mp3-collection for files that have their names beginning with 'Metallica' and whose size is greater than 10000 kilobytes (> 10 MB).
    The 2nd command searches in the same directory as above case but only for files that are greater than 10MB, but they should not have 'Metallica' as the starting of their filenames.
    The 3rd command searches in the same directory for files that begin with 'Metallica' in their names or all the files that are greater than 10 MB in size.

    -

    T
    he exec option is probably the most important feature of the find tool. The exec command allows you to execute a particular command on the results of the find command. A simple demonstration of this feature is shown below. Its upto your imagination to make maximum use of this feature. Suppose you wanted to see the details of the files (read, write, execute permission, file size, owner etc..) that have been returned as a search result you could do the following

    $ find / - name 'Metallica*' -exec ls -l {\}\ \;

    This command would find all the files on your system that begin with the letters 'Metallica' and would then execute the 'ls -l' command on these files. So basically you would be able to see the details of the files that were returned according to your search criteria.

    The words following the -exec option is the command that you want to execute i.e. ls -l in this case.
    {\}\ is basically an indicator that the filenames returned by the search should be substituted here.
    \; is the terminating string, and is required at the end of the command
8.
How to install libstdc++.so.5
  • Search for stdc++5 in synaptic package manager (System->Administration->Synaptic) and then mark and install it. Or use this console command:
  • sudo apt-get install libstdc++5
9. Enter as root
First, open a Terminal window and become root:
  • sudo bash
(type your user password)

At this point, you should have a root shell. Test this with command
  • 'whoami' which should return "root"

  1. How do I install .deb packages?

  • $ sudo dpkg -i package.deb

linux下tar gz bz2 tgz z等众多压缩文件的解压方法 zz

对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕。别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,不过在Linux使用.zip和.rar的人就太少了。本文就来对这些常见的压缩文件进行一番小结,希望你下次遇到这些文件时不至于被搞晕icon_smile.gif

在具体总结各类压缩文件之前呢,首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这两个概念呢?其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另它的工具将这一大堆文件先打成一个包,然后再就原来的压缩程序进行压缩。

Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲tar命令的基本用法:

tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面来举例说明一下:

# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思

# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-x是解开的意思

以上就是tar的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压文件,tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压缩程序,比如调用gzip、bzip2等。
1) tar调用gzip
gzip是GNU组织开发的一个压缩程序,.gz结尾的文件就是gzip压缩的结果。与gzip相对的解压程序是gunzip。tar中使用-z这个参数来调用gzip。下面来举例说明一下:

# tar -czf all.tar.gz *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,包名为all.tar.gz

# tar -xzf all.tar.gz
这条命令是将上面产生的包解开。

2) tar调用bzip2
bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用gzip。下面来举例说明一下:

# tar -cjf all.tar.bz2 *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用bzip2压缩,生成一个bzip2压缩过的包,包名为all.tar.bz2

# tar -xjf all.tar.bz2
这条命令是将上面产生的包解开。

3)tar调用compress
compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人多。.Z结尾的文件就是bzip2压缩的结果。与 compress相对的解压程序是uncompress。tar中使用-Z这个参数来调用compress。下面来举例说明一下:

# tar -cZf all.tar.Z *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用compress压缩,生成一个uncompress压缩过的包,包名为all.tar.Z

# tar -xZf all.tar.Z
这条命令是将上面产生的包解开

有了上面的知识,你应该可以解开多种压缩文件了,下面对于tar系列的压缩文件作一个小结:
1)对于.tar结尾的文件
tar -xf all.tar

2)对于.gz结尾的文件
gzip -d all.gz
gunzip all.gz

3)对于.tgz或.tar.gz结尾的文件
tar -xzf all.tar.gz
tar -xzf all.tgz

4)对于.bz2结尾的文件
bzip2 -d all.bz2
bunzip2 all.bz2

5)对于tar.bz2结尾的文件
tar -xjf all.tar.bz2

6)对于.Z结尾的文件
uncompress all.Z

7)对于.tar.Z结尾的文件
tar -xZf all.tar.z

另外对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们:
1)对于.zip
linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:

# zip all.zip *.jpg
这条命令是将所有.jpg的文件压缩成一个zip包

# unzip all.zip
这条命令是将all.zip中的所有文件解压出来

2)对于.rar
要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux不是免费的;可从http://www.rarsoft.com/download.htm下载RARfor Linux 3.2.0,然后安装:
# tar -xzpvf rarlinux-3.2.0.tar.gz
# cd rar
# make
这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:

# rar a all *.jpg
这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar扩展名将自动附加到包名后。

# unrar e all.rar
这条命令是将all.rar中的所有文件解压出来

到此为至,我们已经介绍过linux下的tar、gzip、gunzip、bzip2、bunzip2、compress、 uncompress、 zip、unzip、rar、unrar等程式,你应该已经能够使用它们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、. Z、.tar.Z、.zip、.rar这10种压缩文件进行解压了,以后应该不需要为下载了一个软件而不知道如何在Linux下解开而烦恼了。而且以上方法对于Unix也基本有效。

本文介绍了linux下的压缩程式tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、 zip、 unzip、rar、unrar等程式,以及如何使用它们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、. tar.Z、.zip、.rar这10种压缩文件进行操作。

Linux目录操作命令 zz

mkdir命令
功能:创建一个目录(类似MSDOS下的md命令)。
语法:mkdir [选项] dir-name
说明:该命令创建由dir-name命名的目录。要求创建目录的用户在当前目录中(dir-name的父目录中)具有写权限,并且dirname不能是当前目录中已有的目录或 文件名称。
命令中各选项的含义为:
- m 对新建目录设置存取权限。也可以用chmod命令设置。
- p 可以是一个路径名称。此时若路径中的某些目录尚不存在, 加上此选项后, 系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。

rmdir 命令
功能:删除空目录。
语法:rmdir [选项] dir-name
说明:dir-name表示目录名。该命令从一个目录中删除一个或多个子目录项。需要 特别注意的是,一个目录被删除之前必须是空的。rm - r dir命令可代替 rmdir,但是有危险性。删除某目录时也必须具有对父目录的写权限。
命令中各选项的含义为:
- p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应 的信息。

cd 命令
功能:改变工作目录。
语法:cd [directory]
说明:该命令将当前目录改变至directory所指定的目录。若没有指定directory, 则回到用户的主目录。为了改变到指定目录,用户必须拥有对指定目录的执行和读 权限。
该命令可以使用通配符(通配符含义请参见第十章)。

pwd 命令
在Linux层次目录结构中,用户可以在被授权的任意目录下利用mkdir命令创建新目录,也可以利用cd命令从一个目录转换到另一个目录。然而,没有提示符来告知用 户目前处于哪一个目录中。要想知道当前所处的目录,可以使用pwd命令,该命令显示整个路径名。
语法:pwd
说明:此命令显示出当前工作目录的绝对路径。

ls 命令
ls是英文单词list的简写,其功能为列出目录的内容。这是用户最常用的一个命令之一,因为用户需要不时地查看某个目录的内容。该命令类似于DOS下的dir命令。
语法:ls [选项] [目录或是文件]
对于每个目录,该命令将列出其中的所有子目录与文件。对于每个文件,ls将输出 其文件名以及所要求的其他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或是文件名时,就显示当前目录的信息。
命令中各选项的含义如下:
- a 显示指定目录下所有子目录与文件,包括隐藏文件。
- A 显示指定目录下所有子目录与文件,包括隐藏文件。但不列出“.”和 “..”。
- b 对文件名中的不可显示字符用八进制逃逸字符显示。
- c 按文件的修改时间排序。
- C 分成多列显示各项。
- d 如果参数是目录,只显示其名称而不显示其下的各文件。往往与l选项一起使 用,以得到目录的详细信息。
- f 不排序。该选项将使lts选项失效,并使aU选项有效。
- F 在目录名后面标记“/”,可执行文件后面标记“*”,符号链接后面标记 “@”,管道(或FIFO)后面标记“”,socket文件后面标记“=”。
- i 在输出的第一列显示文件的i节点号。
- l 以长格式来显示文件的详细信息。这个选项最常用。
每行列出的信息依次是: 文件类型与权限 链接数 文件属主 文件属组 文件大小 建立或最近修改的时间 名字
对于符号链接文件,显示的文件名之后有“—〉”和引用文件路径名。
对于设备文件,其“文件大小”字段显示主、次设备号,而不是文件大小。
目录中的总块数显示在长格式列表的开头,其中包含间接块。
- L 若指定的名称为一个符号链接文件,则显示链接所指向的文件。
- m 输出按字符流格式,文件跨页显示,以逗号分开。
- n 输出格式与l选项相同,只不过在输出中文件属主和属组是用相应的UID号和 GID号来表示,而不是实际的名称。
- o 与l选项相同,只是不显示拥有者信息。
- p 在目录后面加一个“/”。
- q 将文件名中的不可显示字符用“?”代替。
- r 按字母逆序或最早优先的顺序显示输出结果。
- R 递归式地显示指定目录的各个子目录中的文件。
- s 给出每个目录项所用的块数,包括间接块。
- t 显示时按修改时间(最近优先)而不是按名字排序。若文件修改时间相同,则 按字典顺序。修改时间取决于是否使用了c或u选顶。缺省的时间标记是最后一次修 改时间。
- u 显示时按文件上次存取的时间(最近优先)而不是按名字排序。即将-t的时间 标记修改为最后一次访问的时间。
- x 按行显示出各排序项的信息。
用ls - l命令显示的信息中,开头是由10个字符构成的字符串,其中第一个字符表示文件类型,它可以是下述类型之一:
- 普通文件
d 目录
l 符号链接
b 块设备文件
c 字符设备文件
后面的9个字符表示文件的访问权限,分为3组,每组3位。
第一组表示文件属主的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字 符分别表示对文件的读、写和执行权限。
各权限如下所示:
r 读
w 写
x 执行。对于目录,表示进入权限。
s 当文件被执行时,把该文件的UID或GID赋予执行进程的UID(用户ID)或GID(组 ID)。
t 设置标志位(留在内存,不被换出)。如果该文件是目录,在该目录中的文件只能被超级用户、目录拥有者或文件属主删除。如果它是可执行文件,在该文件执行 后,指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件。

rm目录删除命令
用户可以用rm命令删除不需要的文件。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,原文件保持不变。
rm命令的一般形式为:
rm [选项] 文件…
如果没有使用- r选项,则rm不会删除目录。
该命令的各选项含义如下:
- f 忽略不存在的文件,从不给出提示。
- r 指示rm将参数中列出的全部目录和子目录均递归地删除。
- i 进行交互式删除。
使用rm命令要小心。因为一旦文件被删除,它是不能被恢复的。了防止这种情况的发生,可以使用i选项来逐个确认要删除的文件。如果用户输入y,文件将被删除。如果输入任何其他东西,文件则不会删除。
更多帮助信息请查看 rm --help

chmod
$chmod 755 file
This would be the following 400+040+004+200+100+010+001 = 755 where you are giving all the rights except the capability for anyone to write to the file.cgi file(-rwxr-xr-x).

Numeric Permissions:
CHMOD can also to attributed by using Numeric Permissions:

400 read by owner
040 read by group
004 read by anybody (other)
200 write by owner
020 write by group
002 write by anybody
100 execute by owner
010 execute by group
001 execute by anybody

Monday, May 11, 2009

在Linux下搭建Fortran开发环境 zz

Fortran是最早的计算机高级语言之一,至今已经有40年左右的历史了,其中经历了Fortran 66、Fortran 77、 Fortran 90和Fortran 95。Fortran 200x目前还在草案过程中。在科学计算领域,Fortran具有十分强大的生命力,例如 在大型科学计算中还有HPF(High Performance Fortran)等。

主流的Fortran 90/95编译器有PGI Fortran、HP Fortran Compiler(由Fortran PowerStation进化过来的)和Intel Fortran Compiler等。

本文主要介绍其中的两款软件在Linux下的安装,即Intel Fortran Compiler 8.0和F Compiler。选取它们的原因是, 前者是一个Intel提供的免费的Non-Commercial版本;后者则是Fortran 90/95的一个子集的实现,学习起来非常容易。

Intel Fortran Compiler 8.0

Intel Fortran Compiler这个编译器性能极佳。它的发行版有Windows和Linux两种。这两种都分别提供Non-Commercial版免费下载,但不提供技术支持。下面介绍整个的安装过程。

1.下载Non-commercial版Fortran编译器,有两种方式。一是登录http://www.intel.com/software/products/global/eval.htm,选择 Intel(r) Fortran Compiler for Linux*下的第二项Non-Commercial Unsupported Version,点击进入。二是直接登陆http://www.intel.com/software/products/compilers/flin/noncom.htm。 整个下载过程需要好几步。首先单击“Continue”按钮进入下一页;第二页有个调查表,填好之后进入下一页;第三页是软件协议页面,看过之后单击 “Accept”按钮进入下一页;第四页是注册页面,其中E-mail栏一定要填好,填完后单击“Submit”按钮进入下一页;这是最后一页,说明已经 注册成功,Intel会给用户发一封电子邮件,其中包含一个协议附件。

剩下的工作是收取邮件,然后根据邮件中提供的地址下载软 件。这里下载的软件是l_fc_p_8.0.034.tar.gz,大约84MB。另外用户需要把邮件中的附件另存在刚才下载的软件的同一目录下,这里的 文件名是l_for_70909049.lic。每个人的文件名可能不同,它是一个协议文件。
接下来以root用户进行以下的安装工作,假设前面的两个文件存放在/usr/src/intel目录下,这也是笔者的工作目录。

2.解压安装文件,命令如下:
#tar xzvf l_fc_p_8.0.034.tar.gz

3.安装并指定协议。编译器是安装在/opt/intel_fc_80目录下,协议则在该目录下的licenses文件夹中。最后还要指定licenses的位置。具体命令如下:
#mkdir -p /opt/intel_fc_80/licenses
#cp /usr/src/intel/*.lic /opt/intel_fc_80/licenses
# export INTEL_LICENSE_FILE=opt/intel_fc_80/licenses

4.安装程序,命令如下:
#cd /usr/src/intel/l_fc_p_8.0.034
#./install.sh

如果正确就会看到下面的提示:
The following Intel(R) products and related products are installed.

Intel(R) Fortran Compiler for 32-bit applications, Version 8.0Linux Application Debugger for 32-bit applications, Version 7.3.1

Which of the following would you like to install?
1. Intel(R) Fortran Compiler for 32-bit applications, Version 8.0
2. Linux Application Debugger for 32-bit applications, Version 7.3.1
x. Exit

先选择“1”,安装Intel Fortran Compiler,默认安装即可,默认目录就是/opt/intel_fc_80。

安装编译器完成之后,继续可以安装Linux Application Debugger for 32-bit applications, Version 7.3.1,选择“2”即可,它默认安装在/opt/intel_idb_73下。最后选择“x”退出安装程序。

5.安装完成可以删掉安装文件。命令如下:
#cd /usr/src#rm -rf intel

6.以一般用户登录,登录以后修改用户根目录下的.bash_profile文件,在最后一行加入下面一行:
. /opt/intel_fc_80/bin/ifortvars.sh

注意,上面的语句中点号之后有空格。然后重新登录或执行下面的命令: $source .bash_profile

这样一切安装与配置就完成了,可以简单的测试一下。编辑一个简单的源文件first.f90,内容如下:
program first
print *, "Hello World!"
print *, sin(123.4)
end program first

然后编译,编译命令与以前版本的Intel Fortran Compiler不同,以前采用的是“ifc”命令,从这个版本开始将使用下面的命令:
#ifort first.f90 -o first

或者运行下面的命令:
#./first

这时显示如下:
Hello World!
-0.7693915

上面显示说明一切正常,已经可以正常使用该编译器了。“ifort”的具体使用可以用“ifort -help”获得详细帮助。在/opt/intel_fc_80/doc下有详细的使用文档。

7.卸载Intel Fortran Compiler
#/opt/intel/Compiler/11.0/083/bin/ia32/uninstall_cprof.sh

F编译器

F 编译器是Fortran Company / NAGWare F Compiler。它是Fortran 90/95的一个子集的实现,支持 Fortran 95和HPF的一些新的概念。对于Fortran 77程序员来说,F可以直接调用Fortran 77程序,支持与鼓励面向对象编程。 关于F的详细资料可以到http://www.fortran.com/F查看。

安装F非常简单,F有Windows、Linux和Solaris三种发行版。这三种都需要GCC才可以工作,因此首先要保证系统安装了GCC环境。

首先下载安装文件。这里下载的是Linux版,下载地址是ftp://ftp.swcp.com/pub/walt/F,文件是f_linux_031017.tar.gz,大约2MB左右。文件下载后存放到/usr/src目录下准备安装。以下的工作需要root用户权限。解压文件,进入解压后文件的目录,安装编译执行文件、库文件和手册,具体命令如下:
#tar xzvf f_linux_031017.tar.gz
# cd F_031017
# cp bin/* /usr/local/bin
# mkdir /usr/local/lib/F
# cp -d -p lib/* /usr/local/lib/F
#mkdir /usr/local/man/man1
#cp doc/*.1 /usr/local/man/man1

安装完成后,进入examples目录进行测试,命令如下:
#cd examples
#F sieve.f95 -o sieve

如果成功,则会产生一个目标执行文件sieve,执行下面的命令,结果如下:
#./sieve

There are 25 prime numbers less than 100
2 3 5 7 11
13 17 19 23 29
31 37 41 43 47……

上面显示说明已经安装成功,可以正确使用了。另外,在examples目录下还有众多的例子用户可以查看。在doc目录下还有其它的相关文档,包括F的编译选项等。

XP下Virtualbox虚拟Ubuntu共享文件夹设置 zz

环境:主机操作系统是Windows XP,虚拟机是Ubuntu 8.10,虚拟机是VirtualBox 2.1.0。
1. 安装增强功能包(Guest Additions)
安装好Ubuntu 8.10后,运行Ubuntu并登录。然后在VirtualBox的菜单里选择"设备(Devices)" -> "安装增强功能包(Install Guest Additions)"。
你会发现在Ubuntu桌面上多出一个光盘图标,这张光盘默认被自动加载到了文件夹/media/cdom0。进入命令行终端,输入:
cd /media/cdrom0
sudo ./VboxLinuxAdditions.run (根据不同的系统,文件可能不一样)
开始安装工具包。安装完毕后会提示要重启Ubuntu。

2. 设置共享文件夹
重启完成后点击"设备(Devices)" -> 共享文件夹(Shared Folders)菜单,添加一个共享文件夹,选项固定和临时是指该文件夹是否是持久的。共享名可以任取一个自己喜欢的,比如"gongxiang",尽量使用英文名称。

3. 挂载共享文件夹
重新进入虚拟Ubuntu,在命令行终端下输入:
sudo mkdir /mnt/shared
sudo mount -t vboxsf gongxiang /mnt/shared
其中"gongxiang"是之前创建的共享文件夹的名字。OK,现在Ubuntu和主机可以互传文件了。
假如您不想每一次都手动挂载,可以在/etc/fstab中添加一项
gongxiang /mnt/shared vboxsf rw,gid=100,uid=1000,auto 0 0
这样就能够自动挂载了。

4. 卸载的话使用下面的命令:
sudo umount -f /mnt/shared

注意:
共享文件夹的名称千万不要和挂载点的名称相同。比如,上面的挂载点是/mnt/shared,如果共享文件夹的名字也是shared的话,在挂载的时候就会出现如下的错误信息(看http://www.virtualbox.org/ticket/2265):
/sbin/mount.vboxsf: mounting failed with the error: Protocol error
原因分析可以看Tips on running Sun Virtualbox的Shared Folder on a Linux Guest节。