2019-09-28

translate-102-principle


translate-102-principle

https://en.wikipedia.org/wiki/Phonics

Alphabetic principle 字母原则
某些字母语言(例如西班牙语,葡萄牙语(尤其是意大利语))的拼写结构在拼字法上相对透明,或者在拼字法上较浅,因为声音和表示它们的字母模式之间几乎是一对一的对应关系。
英语拼写更为复杂,是一种很深的拼字法,部分原因是它试图用仅由26个字母组成的字母表(并且没有变音符号)来代表40种以上的口语音素。结果,经常将两个字母一起使用来代表不同的声音,称为有向图digraphs。例如,t和h并排放置以表示/θ/或/ð/。
字母ee几乎总是代表/iː/,但是声音也可以由字母i和y代表。同样,信群ough:
/ʌf/ as in   enough,
/oʊ/ as in   though,
/uː/ as in  through,
/ɒf/ as in    cough,
/aʊ/ as in    bough,
/ɔː/ as in    bought, and
/ʌp/ as in hiccough,
while in slough and lough, 发音会有所不同。

Vowel phonics patterns 元音拼音模式
Short vowels 短元音是五个单字母元音,分别是: a, e, i, o, u, “短元音”一词是历史悠久的,意味着一次(在中古英语中)这些元音的发音时间特别短;目前,这意味着他们还没有像长元音一样的双元音。(元音字母在重读闭音节中发短元音)
/æ/ as in cat,
/ɛ/ as in bet,
/ɪ/ as in sit,
/ɒ/ or /ɑ/ as in hot,
/ʌ/ as in cup.

Long vowels 长元音 有相同的声音作为元音的名称。(元音字母在开音节中发长元音,即字母音)。如such as
/eɪ/ in bay,
/iː/ in bee,
/aɪ/ in mine,
/oʊ/ in no,
/juː/ in use.
教育者使用“长元音”一词的方式与语言学家使用该术语的方式不同。细心的教育者使用术语“长元音字母”或“长元音”,而不是“长元音声音”,"long vowel letters" or "long vowels", not "long vowel sounds",
因为五个长元音字母(长元音字母)(long vowel letters)中的四个实际上代表了声音的组合(a, i, o, u)中,只有一个由一个长的元音组成(/iː/ in bee),这是语言学家所使用的术语。在教室里,长元音被教导具有“与字母名称相同的声音”。老师教给孩子一个长元音“说”它的名字。

Schwa是大多数单个元音拼写可以代表的第三种声音。它是许多重读音节中元音的含混不清的声音,用语言符号 /ə/表示。是sofa沙发中a的声音。尽管schwa是英语口语中最常见的元音,但并不总是向小学生教授schwa,因为有些人很难理解。但是,一些教育家认为schwa应该包含在初级阅读程序中,因为schwa对于正确地发音英语单词至关重要。(元音字母在非重读音节中发/ə/)

Closed syllables 封闭音节是在单个元音字母single vowel letter后跟辅音consonant的音节。在单词button中,两个音节都是封闭音节,因为它们包含单个元音,后跟辅音。因此,字母u代表短音/ʌ/。(第二个音节中的o发出/ə/声音,因为它是一个非重读音节unstressed syllable。)

Open syllables 开放音节是在音节末尾出现元音的音节。元音会说出很长的声音。在basin盆地这个词中,ba是一个开放的音节,因此说/beɪ/。

Diphthongs是融合两个相邻元音的语言元素。英语有四种常见的双音diphthongs。公认的双元音是:
/aʊ/ as in cow and /ɔɪ/ as in boil.
有三个(a,i,o字母)长元音实际上也是两个元音的组合,换句话说就是双音元:
/aɪ/ as in "I" or mine, /oʊ/ as in no, and /eɪ/ as in bay,
这部分说明了他们被认为是“长”的原因。

Vowel digraphs 元音二字图是那些拼写模式,其中两个字母用于表示元音。的 ai in sail 是一个有向图元音。因为元音二位字母中的第一个字母有时会说出它的长元音,例如在sail 航行中,一些语音程序曾经教过“两个元音走路时,第一个元音会说话”。由于许多非示例,例如such as
'au' spelling of the /ɔː/ sound and
'oo' spelling of the /uː/ and /ʊ/ sounds
这两者都没有遵循这种模式。

Vowel-consonant-E 元音-辅音-E拼写是指单个元音字母,后跟辅音和字母e发出长元音的拼写。这种趋势通常被称为“无声规则”"Silent-e Rule",例如: bake, theme, hike, cone, and cute.烘烤,主题,远足,锥形和可爱。(ee拼写(例如在Meet中)有时被认为是此模式的一部分,但前后不一致。)

R-controlled R控制的音节包括那些元音后跟r的音节与其常规模式不同的音节。例如,像car汽车这样的单词应该具有“封闭音节”的模式,因为它具有一个元音并且以辅音结尾。但是,a in car没有常规的“短”声音 (/æ/ as in cat) ,因为它由r控制。r改变它前面的元音的声音。其他示例包括:
park, horn, her, bird, and burn. 公园,喇叭,她的鸟,鸟和燃烧。

Consonant-le 辅音-le是最后音节,位于底座/根字base/root 的结尾。它包含一个辅音,后跟字母le。该e是沉默不发音,因为它是在早期的英语发音存在,并且拼写历史。

Consonant phonics patterns 辅音拼音模式
Consonant digraphs 辅音字母是那些使用两个字母表示单个辅音音素consonant phoneme的拼写。最常见的辅音字母:
ch for /tʃ/,
ng for /ŋ/,
ph for /f/,
sh for /ʃ/,
th for /θ/ and /ð/.
字母组合(例如: wr for /r/ and kn for /n/ )在技​​术上也是辅音字母,尽管它们很少见,有时被认为是带有“无声字母”的模式。

Short vowel+consonant 短元音+辅音模式涉及到
/k/ as in peek,
/dʒ/ as in stage,
/tʃ/ as in speech.
每个这些声音有两个可能的拼写在单词,
ck and k for /k/,
dge and ge for /dʒ/,
tch and ch for /tʃ/.
拼写由声音之前的元音类型决定。如果在声音之前有短元音,则使用前一个拼写,如: pick, judge, and match.
如果在声音之前没有短元音,则使用后者的拼写,如: took, barge, and launch.


Stay alert and keep close.
Follow our instructions and you'll be fine.

In other words, do what we say and don't get in our way.






translate-101-phonics-rules


translate-101-phonics-rules

https://www.understood.org/en/learning-attention-issues/child-learning-disabilities/reading-issues/14-phonics-rules-for-reading-and-spelling

15个拼读阅读和拼写规则  作者:Ginny Osewalt

1. 音节中的元音
每个单词的每个音节必须至少有一个元音。元音可以单独存在于一个音节中,如 u●nit 和 an●i●mal。它也可以被辅音包围,如 jet, nap●kin, and fan●tas●tic.

2. 短元音和长元音
元音可以发出不同的声音。他们发出的声音取决于他们在一个单词中的位置。例如,元音后面是辅音吗?这有助于确定元音是否发出短音或长音: go vs. got, she vs. shed, hi vs. him.

“closed syllable”当一个音节中只有一个元音,后面跟着至少一个辅音时,元音通常发出短促的声音。例子包括 on, itch, mas●cot, and Wis●con●sin. 这种模式被称为“闭音节”,因为辅音“接近”短元音。

“open syllable”当只有一个元音并且它在一个音节的末尾时,元音发出长长的声音,就像  he and ban●jo. 这种模式被称为“开放音节”。

3. 无声的e
“vowel-consonant-e.”当 e 是一个单词中的最后一个字母,并且该音节中只有一个其他元音时,该音节中的第一个元音通常发长元音(字母音)而 e 是不发音的,如 sale and in●side. 这个音节模式被称为“元音-辅音-e”。
“silent e”有些老师称之为“无声ê ”的规则。有人称之为“魔术e”规则。e赋予另一个元音所有的力量并使该元音使用其长音 (“say its name”).

4. 辅音混合Consonant blends 和 复合字母Digraph
复合字母是代表一种声音的两个字母的奇特单词。在由辅音制成的复合字母中,两个辅音一起工作以形成新的声音。例子包括(ch,sh,th,wh,ph) chap, ship, thin, whiz, and photo. 辅音混合物是不同的。这些由两个或多个辅音组成的小组一起工作。但是与复合字母不同的是,当它们混合在一起时,它们仍能听到它们各自的声音。例子包括(cl,gr,sp,scr) clam, grasp, and scrub.

5. Vowel digraphs复合元音
在复合元音字母中,两个元音是并排的。第一个元音很长,并且说出了它的名字。第二个元音是沉默的,如(oa,ai,ea) boat, paint, and beach.

有时,两个元音一起工作以形成新的声音。这被称为双元音diphthong。例子包括(ou,oi) cloud and boil.

6. 被R控制的元音
“bossy r”当一个音节有后跟一个元音R ,元音是被“控制”R并产生了新的声音。例子包括 car, bird, germ, form, and hurt. 这个规则有时被称为“专横的r ”。

7. “schwa”的声音
任何元音都可以发出schwa的声音; 这听起来像一个弱的 uh or ih. 像(o,a) from and final 这样的词有schwa声音。有些话有一个以上的元音的声音,像 apartment and banana. 这是英语中最常见的声音。 a partm e nt  and  b a nan a .

8. 软c和硬c,软g和硬g
当字母 c 后跟元音 e,i或 y时,它通常会发出柔和的声音。其中的例子是 cent, circus, and cyclone. 对于其他元音,字母 c 发出硬声,如  cat and cot.

同样,当字母 g 后面跟着元音 e,i或 y时,它通常会发出柔和的声音。其实例是 gel, giant, and gym. 与其他元音字母 g 由硬质的声音,如  gas, gorilla, and yogurt.

9. “fszl”(fizzle)啸 规则
字母f,s,z和l 通常在紧跟短元音之后的单音节词的末尾加倍。例子包括 stuff, grass, fuzz, and shell. 例外情况包括 quiz and bus.

10. 以k或ck结尾
当一个单音节的单词以短小元音后面的/k/声音结束时,它通常用ck拼写,就像在 duck and trick. 当/k/声音遵循辅音,长元音或双元音时,它通常拼写为k,如 task, cake, soak, and hawk.

11. /j/声音和/ch/声音
在一音节字,当/j/声音紧跟一个短元音,它拼写为 dge 如 badge, hedge, bridge, dodge, and smudge.(  d “保护”元音免受“魔法e ”规则的影响。)

在一音节字,当/ch/声音紧跟一个短元音,它通常拼写 tch 比如  catch, fetch, stitch, blotch, and clutch. 这条规则的例外情况有  such, much, rich, and which.

12. 用-ing换掉e
当字用不发声的e结尾,删除e加入-ing。例如:bike/biking, give/giving, and dodge/dodging. 此规则也适用于以元音开头的其他后缀,例如  -ed, -er, -able, and -ous. 例子:grieve/grievous, excite/excitable, and hope/hoped.

13. Doubling双写
在这样一个音节词的胜利,其中一个短元音后面跟着一个辅音,添加以元音开头的前后缀一倍辅音。示例: winner, winning, winnable.

14. Plurals复数
对于大多数单词,添加s以使它们复数,如 cat/cats。但是当一个单词以 s, sh, ch, x, or z, 结尾时  ,添加  es  使其复数,如 classes, brushes, and foxes.

15. Y规则
要使复数形成一个以y后面的元音结尾的单词,只需添加s,就像 toy/toys. 当y紧跟辅音后,将y更改为i并添加es。例如: family/families, pony/ponies, and treaty/treaties.

后缀遵循类似的y规则集。如果在y之前有一个元音,请保留y并简单地添加后缀。例子 play/playing and annoy/annoying.

当一个字结束与辅音紧接着y,改变y为i -添加后缀像以前一样-ed和-est。例子 carry/carried and happy/happiest.

但是当后缀以i开头时,请保留y并简单地添加后缀,如 fly/flying and baby/babyish.

规则的例外情况
英语中的大多数单词都遵循拼音规则。但是,这些规则的任何例外都需要教授和记忆,以便阅读和拼写。这些单词通常出现在视觉词或高频词的列表中。

如果您的孩子正在努力阅读或拼写,请与老师联系。额外的一些语音教学可以帮助你的孩子赶上来。您可能还想了解  阅读专家和阅读干预措施,这些是学校用来帮助苦苦挣扎的读者的常用资源。

English-phoneme


1. 声音概述
2. 音素phoneme与音标
 2.1 音素与音标
 2.2 音素与字母
 2.3 字母发音-字母自然发音对照表
 2.4 音标表
 2.5 元音字母-辅音字母表
 2.6 单元音发音口形趋势表
3. 音节的概念
 3.1 音节的分类
 3.2 音节的划分
 3.3 音节的拼读方法
 3.4 重读音节
4. 英语的重读
5. 小结:发音及拼写有规则也有例外
6. 英语单词重音技巧学习资源
7. 更多推荐阅读

1. 声音概述

物理学的声音有4个角度
  • 音色(音质): 是一种声音区别于另外一种声音的基本特征,比如人的声音和鸟的声音。所以,对于人声识别的研究来说,音色肯定是主要研究对象。
  • 音调(频率): 指声音的高低,取决于声波的频率,可以笼统的认为就是基音频率。比如男声和女生,一般男声低沉女声尖锐。
  • 音强(幅度): 表征声音的强弱,由声波的震动幅度决定,在语音信号处理中,可以直观理解为信号幅度(但是音强计算式却不是简单的幅度)。
  • 音长(时长): 发音时间的长短,这个很好理解。对于初学者,这几种声音的特性,基本上可以与语音信号特征对应起来。

2. 音素phoneme与音标

2.1 音素与音标

音素是从(音质)的角度划分的最小语音单位,音标就是音素的书写符号。从发音特征上分为两类
  • 元音(母音): 发音时,气流不受阻碍。元音是音节的核心。
  • 辅音(子音): 发音时,气流会或多或少的受到阻碍,或者声腔某一部分完全关闭。根据声带是否震动又分为清辅音(声带不震动)和浊辅音(声带震动)
注意:音标≠音素,音素是音,音标是符号。一个音素只用一个音标表示,而一个音标并不只表示一个音素(双元音就是由2个音素组成的,相对于单元音来说。由2个音素构成的音标我们称之为双元音)。

2.2 音素与字母

字母有26个,音标有44个或48个(有多个版本),所以字母和音标的对应关系比较复杂。
字母或字母组合根据一系列规则与音素对因。但由于历史原因,所有规则都有例外。规则能够涵盖85%的单词。
这套规则就是自然发音。

字母组成单词。(单个字母或一个字母组合对因一个音素)
一个或多个音素组成音节,一个或多个音节组成一个单词的发音。

2.3 字母发音-字母自然发音对照表

  • 左边是字母本身的发音音标,分别有KK及DJ音标;
  • 右边是自然拼读的发音音标,是要练习,尽可能记住的基础发音。
  • 可以看到这里所有辅音的KK音标及DJ音标是一样的。
  • 大部分辅音音标与辅音字母写法相同。
  • 不同写法的只有字母: J [dʒ], Y [j], Q [kw], X [ks], C [k]/[s];
  • 其中l,m,n,r音标只有1个,但在元音前面,或后面会有2个不同的发音。
  • 表格最后一列,字尾(无),表示通常这个发音音素不会出现在单词尾部,但不代表这个字母不会出现在字尾。

2.4 音标表

包含了IPA63, IPA88, KK, 三个版本的音标对照


2.5 元音字母-辅音字母表

区块结构:
  • 左:[字母发音音标]是一个音节;
  • 中:大小写字母;
  • 右:[自然发音音标]是一个音素;
    • 要记住的就是左边的自然发音音素!!!
  • 加粗为母音,即元音。每个区块的第一列
  • 绿色为子音,即辅音。每个区块跟在母音下面的部分。
  • 看左边字母音标: 每个字母本身也是一个单词,W有2个音节,其他都是单音节;
  • 看右边自然拼读音标有2个特点: 
    • 大部分辅音字母和它们的自然发音音标长得一样,除了这些: Q[kw], C[k], Y[j], J[dʒ], X[ks], 
    • 大部分辅音字母音标去掉元音部分就是自然发音音标,除了: Q[kw], C[k], Y[j], G[g], H[h], W[w]
字母家庭:
  • [o] O 没有孩子
  • [aɪ] I 有1个孩子(y),这个Y是个半元音
  • [ju] U 有2个孩子(q,w)
  • [e] A 有3个孩子(h,j,k)
  • [i] E 有8个孩子([i]: b,c,d,g,p,t,v,z)
    • E [ɛ] 还有6个外甥([ɛ]: f,l,m,n,s,x)
  • [ɑr] r 是个孤儿

2.6 单元音发音口形趋势表


  • 从上往下,嘴形越来越大。
  • 中间的[ɚ][ə], 总是轻读的2个元音;
  • 中间的[ɚ][ɝ], 都是卷舌音,一短[ɚ]一长[ɝ];一轻[ɚ]一重[ɝ]。

https://en.wikipedia.org/wiki/International_Phonetic_Alphabet#Vowels
https://en.wikipedia.org/wiki/Vowel
https://en.wikipedia.org/wiki/International_Phonetic_Alphabet_chart

3. 音节的概念

音节是读音的基本单位,由音素组成,元音音素是音节的核心,通常一个元音字母和其前后的辅音组成一个音节。。

3.1 音节的分类

  • 开音节,元音字母发字母音。
    • 绝对开音节,元音音素后面没有辅音音素的音节。(we, hi, yo-yo)
    • 相对开音节,元音音素后面有一个辅音音素(除了r)之外,最后是一个不发音的e字母构成的音节。(take, make)
  • 闭音节,元音音素后面有辅音音素(除了r)构成的音节。元音字母通常发短音。
重读闭音节中,元音字母通常发短元音。
+ing时,最后一个辅音要双写。sit > sitting; begin > beginning
重读闭音节形式上表现为两个辅音中间夹一个元音。

3.2 音节的划分

单词: 以元音字母为基础划分音节。(音标的角度:以元音音素为基础划分音节)
  1. 找出单词中的元音字母;比如: information的: i..o..a.io.
  2. 母音会跟前面的子音一起发音: i. fo. ma tio.
  3. 剩下的子音由最近的母音收留: in for ma tion
注意:
  •   字母x永远做音节尾巴;
  •   2个元音连一起,第一个发长音,第二个不发音;但也有例外。
  •   一些固定字母组合不分开;

3.3 音节的拼读方法

只能子音拼母音,简称子母拼音。
不可以子音拼子音,不可以母音拼母音,不可以母音拼子音。

3.4 重读音节

每个单词都有一个重音节,单音节本身重读;
多意单词的重音发生在不同位置,会表达不同的意义与词性;
多音节重读音节规则:
  1. 一个单词只有一个重音节;
  2. 单音节单词本身重读,例如: eat, drink, sign, well...
  3. 大多数双音节名词及形容词的第一个音节为重音:
    • 名词: table, water, people, flower, teacher, student, carpet, lesson...
    • 形容词: clever, happy, prety, handsome, funny, local, useful, foolish, native, careless...
  4. 大多数双音节动词的最后一个音节为重音: decide, begin, conduct, resolve, relax
  5. 兼具名词和动词属性的单词:
    • 名词(第一个音节重读): 'pre-sent 礼物, 'ex-port 出口, 'su-spect 嫌疑人 ...
    • 动词(第二个音节重读): pre-'sent 呈交, ex-'port 出口, su-'spect 怀疑 ...
  6. 词尾是 –er 或 –ly 的三音节单词重音通常落在第一个音节上: 'or-der-ly, 'qui-et-ly, 'ma-na-ger...
  7. 词尾是 -ic, -sion 或 -tion 的单词重音通常落在倒数第二个音节上: cre-'a-tion, com-'mi-ssion, pho-to-'gra-phic...
还有前后缀,复合词等的规则,请看:
英语重音的十二条军规
http://blog.sciencenet.cn/blog-510768-1103428.html

英语单词重音:8 项重音原则,改善你的英语发音
https://www.fluentu.com/blog/english-chi/英语-单词-重音/

4. 英语的重读

除了上一节单词中重音节的重读。英文句子中单词也有重读。(实词重读,虚词轻读)(句子的重音表达情绪)
  • 实词: 名词noun, 及修饰名词的形容词Adjective; 动词verb, 及修饰动词的副词Adverb;
  • 虚词: 介词,连词,冠词,部分代词等...
不同的句型有固定语调:

5. 小结:发音及拼写有规则也有例外

英语的音素,音标等是在语言已经发展到现今,由语言学家整理总结归纳出来的。不同时期不同地区不同的专家也会有不同的结果。
美国有KK音标,英国有DJ音标。不同时期有不同的版本IPA63,IPA88...
拼读方法是整理总结归纳出来的。并不能包含所有单词。

中文音节比较简单,一个汉字一个音节,且音调固定。“冤枉,元音,远望,愿望”。发音像机器一个字一个字发音。
英文单词的音节比较复杂,一个单词可以有1个或多个音节,且有一个重音节。句子有重读单词(实词),轻读单词(虚词)。发音高低起伏像唱出来的。抑扬顿挫的英式发音尤其明显。
大部分单词能够遵循一套复杂的规则划分音节,标出重音,但由于历史原因,仍有小部分单词是毫无规律的。

换句话说,就是所有的规则都有例外。所以这些规则只是辅助学习方法,遇到疑问就需要查字典确认。

6. 英语单词重音技巧学习资源

https://www.fluentu.com/blog/english-chi/英语-单词-重音/
  • Forvo — Forvo 绝对是目前最受欢迎的语音词典之一。输入单词后,它除了会给出释义,还会提供单词的多种发音,让你能听到不同口音的发音特点。为了方便起见,下面的示例单词全部附上了它们在 Forvo 上的链接。
  • 韦氏词典 — 韦氏词典是一部知名度极高的词典,它对单词的释义详细而准确。网站上除了学习板块“每日一词”之外,也会记录你近期查过的单词,并且可以建立收藏夹,还有供 iOS 和安卓用户下载使用的 App。麦克米伦和剑桥词典也是可提供单词发音的高品质词典。
  • English Club — English Club 是一个深受英语教师和学生喜爱的网站。网站上的语法课程化整为零,学习起来更加简单易懂。另外还有一些寓教于乐的小测验和小游戏,可以帮助你巩固学到的知识点。而且完全免费!如果想进行更多单词重音方面的练习题,还可以试试 Word Stress Rules 和 esl-lounge 这两个网站。
  • FluentU 能够让你在真实对话场景中把握英语单词的重音,带给你非常直观的学习体验。

7. 更多推荐阅读

什么是元音,什么是辅音?不要元音行吗?不要辅音行吗?
https://www.zhihu.com/question/21881798
安时 编辑于 2015-03-14 (649 人赞同 截止20190927) 详细的理论解释,有兴趣可以看看。
听得清靠什么?辅音。
知乎用户 编辑于 2019-01-28 (782 人赞同 截止20190927) 通俗的解释,强烈推荐阅读。
https://www.zhihu.com/question/21881798/answer/19610258

音素,音节,单词,句子,语言
https://blog.csdn.net/astrotycoon/article/details/81631912

2019-09-09

English_Rhymes_Phonics_resource

English_Rhymes_Phonics_resource
1. 英语启蒙早有用吗?_英语启蒙
2. 26个英文字母背后的故事_英语启蒙
3. Phonics Song
4. 学Phonics前先训练韵律节奏_英语启蒙
5. 资源
 5.1 Phonics及Sight Words专辑_英语启蒙
 5.2 动画及音视频等综合资源专辑
 5.3 在线绘本及有声读物专辑_英语启蒙
6. 更多链接
 6.1 淺談字母拼讀法的教學及應用
 6.2 自然拼读 Phonics 资源总汇!
 6.3音标对照表
 6.4 如何判断字典使用哪种音标
 6.5 美式与英式差异
 6.6 英语拼写与阅读技巧
 6.7 英语教学法

本文只是整理到一些相关资源的链接及部分概述,详细信息请通过链接查阅。

1. 英语启蒙早有用吗?_英语启蒙

http://www.fanyizhongguo.com/2018/0621/10235.html
英语启蒙早晚的关键不在于学习多少单词和句子,而在于听力辨音能力的培养。
  • 清华幼儿英语的《语感启蒙》(2004版)
  • 美国少儿合唱团的小演员领唱的《洪恩巴迪英文童谣》

2. 26个英文字母背后的故事_英语启蒙

http://www.fanyizhongguo.com/2018/0621/10236.html
A says a, A says a, alligator alligator a a a.
...
Z says z, Z says z, zebra zebra z z z.
  • 大写字母: Letter Name(字母本音)
  • 小写字母: Letter Sound(要记住的发音)
建立字母与基本发音的联系
https://www.starfall.com/h/abcs/song-abcstarfall/?t=272910135
https://www.starfall.com/h/_videos/cfs1/h_abcs_songabcs-v1-q60-a40.mp4

3. Phonics Song

https://www.youtube.com/watch?v=BELlZKpi1Zs
https://www.youtube.com/watch?v=zAax3z5uQ2k
https://www.youtube.com/watch?v=hq3yfQnllfQ
https://www.youtube.com/watch?v=wSSlwtED2Yg

4. 学Phonics前先训练韵律节奏_英语启蒙

http://www.fanyizhongguo.com/2018/0621/10259.html
Rhymes(韵) 放到了 Phonics(拼读) 之前.
Phonics只是解决阅读中单词的拼读问题,而韵律节奏等语感训练则贯穿在阅读的各个阶段。
没有好的韵律节奏,学会了Phonics后也不能做到流利阅读。
句子中的连读、弱读、省略。
重音和节奏。英语的重音,不仅仅是我们音标中学习的单词的重音,更重要的是短语、句子,也就是所谓的意群的重音。
换句话说,英语的重音不是单词中的某个重读音节,而是口语中的意群——也就是口语中完全不停顿的部分——里面的核心词;而这个重音的表达,也不一定体现在音量上,更重要的是体现在语速的区别上。
声调和语调...

5. 资源

5.1 Phonics及Sight Words专辑_英语启蒙

http://www.fanyizhongguo.com/2018/0621/10276.html
①儿童Phonics快速入门游戏,来源:starfall.com
孩子玩的时候,家长不要指导太多。督促孩子跟着念等做法反而让孩子有压力,不如让他们自己去发现感兴趣的内容效果好。
②Phonics快速入门,来源:abcfastPhonics.com
总体快速入门包括三大部分(A、B、C),共15小节,其中的第(11)—(15)小节最有含金量: ...
...

5.2 动画及音视频等综合资源专辑

http://www.fanyizhongguo.com/2018/0621/10277.html

5.3 在线绘本及有声读物专辑_英语启蒙

http://www.fanyizhongguo.com/2018/0621/10278.html

6. 更多链接

http://www.fanyizhongguo.com/2018/0621/10272.html
原版绘本亲子阅读三步曲_英语启蒙

http://www.fanyizhongguo.com/2018/0621/10266.html
英语思维难在哪儿?_英语启蒙

http://www.fanyizhongguo.com/2018/0621/10244.html
用汉语拼音理解Phonics_英语启蒙

https://www.jianshu.com/p/cdf75a886627
汉语拼音和phonics(自然拼读)

https://www.jollylearning.co.uk/jolly-phonics/

6.1 淺談字母拼讀法的教學及應用

http://www.cavesbooks.com.tw/CET/ArtContent_tw.aspx?CDE=ART20130815170106316
字母拼讀法(又稱自然發音法),就是學習拼字母與發音間的對應規則(letter-sound correspondence);學習如何看到文字的拼法就能夠讀出字音,或聽到字音就能(約略)寫出拼法。字母拼讀法若學得紮實,可以為閱讀及寫作奠下初步基礎。
一般來說,英語系國家的學童在幼稚園階段便開始學習英文字母與發音間的規則,並透過發音讀本做延伸練習及應用。根據Phonics from A to Z 一書中的說明,84 %的英文字彙可以用字母拼讀的規則唸讀出來。
但反觀EFL之學習者,因學習環境及需求的不同,若沒有透過反覆及大量的練習,往往連基本的發音規則都無法充分運用,更難以推廣至奠定啟蒙閱讀之落實。

https://en.wikipedia.org/wiki/English_as_a_second_or_foreign_language
(ESL) English as a second language 英语作为第二语言,
(EFL) English as a foreign language 英语作为外语,
(EAL) English as an additional language 英语作为附加语言,
(ESOL) English for speakers of other languages 英语作为其他语言的发音者.
https://en.wikipedia.org/wiki/English_as_a_second_or_foreign_language#Difficulties_for_learners
https://en.wikipedia.org/wiki/English_as_a_second_or_foreign_language#Exams_for_learners

6.2 自然拼读 Phonics 资源总汇!

https://zhuanlan.zhihu.com/p/45199535
Phonics 已经在欧美国家流行百年,是自然形成的一种发音规则,主要教授英文字母(letter)与语音(sound)间的对应关系。
一旦掌握了Phonics,不用借助字典和音标就可以顺利读出初级英语中70%左右的单词!
学Phonics和不学Phonics的差别
  • - 用Phonics的掌握10万个单词,23岁前能完成,没用的要到173岁。
  • - 用Phonics的须掌握180条规则,但是掌握了就能大量阅读了;没用的需要靠记忆,每年学不超过600个新单词。
  • - 8岁以后词汇量自然增长:用Phonics的每年2910-4850个单词;不用Phonics的如果不刻意去记忆,不会自然增长词汇量。
https://www.theschoolrun.com/phonics-teaching-step-by-step
https://www.jollylearning.co.uk/jolly-phonics/
另请参阅:具有音频的IPA pulmonic辅音图表
https://en.wikipedia.org/wiki/IPA_pulmonic_consonant_chart_with_audio

https://www.youtube.com/watch?v=qPP8ZGa1G6Q&list=PLp2TEvhBsUYYaLsFEk0Kk8nT1ulmgvL4N
介紹自然發音與KK音標(洋蔥英文俱樂部Teresa)

6.3音标对照表

https://en-yinbiao.xiao84.com/biao/4986.html
KK音标_DJ音标对照表
https://new.qq.com/omn/20190106/20190106G062W8.html

http://blog.sina.com.cn/s/blog_a3f822610101ikhl.html
IPA、DJ、KK音标的起源和联系区别

http://sparkandshine.net/international-kk-dj-phonetic-symbols-and-the-corresponding-figure/
国际、KK、DJ音标关系及对应图

http://blog.sina.com.cn/s/blog_48ac73250101bhtd.html
转——英音和美音的发音区别(感觉蛮有体系的)

https://www.xiebruce.top/678.html
十分钟明白IPA/DJ/Gimson/KK等音标

http://www.yinbiao5.com/20.html
音标编辑器

6.4 如何判断字典使用哪种音标

https://www.zhihu.com/question/19798685
英语的 K.K. 音标和 DJ 音标各有什么特点?
要知道自己的字典用的是哪种音标,可以简单看看 toe 这个词:
  • 如果是 /təʊ/,那就是 DJ 音标(或直接称 IPA)标注的英式发音;
  • 如果是 /toʊ/,那应该就是 IPA 标注的美式发音,因为美音这个词的元音开头一般是圆唇并靠后的;
  • 如果是 /to/,那就是 KK 音标标注的美式发音。
  • 如果是 [tʰəʊ̯],那就是一般只有语音、音系的学术文献中才会用到的非常精细的 IPA 标注的英音。
  • 如果是「tō」或「toh」之类,那就是众多混乱的 pronunciation respelling [2] 标准之一了。

6.5 美式与英式差异

美英英语比较
https://en.wikipedia.org/wiki/Comparison_of_American_and_British_English

美国和英国的英语拼写差异
https://en.wikipedia.org/wiki/American_and_British_English_spelling_differences

美国和英国的英语发音差异
https://en.wikipedia.org/wiki/American_and_British_English_pronunciation_differences

美国和英国的英语语法差异
https://en.wikipedia.org/wiki/American_and_British_English_grammatical_differences

英语方言一览表
https://en.wikipedia.org/wiki/List_of_dialects_of_English

区域英语口音
https://en.wikipedia.org/wiki/Regional_accents_of_English

英语方言调查
https://en.wikipedia.org/wiki/Survey_of_English_Dialects

https://en.wikipedia.org/wiki/World_Englishes

https://www.jianshu.com/p/548d2ee5e620
一张表看懂英式音标和美式音标的差异

https://en.wikipedia.org/wiki/Pronunciation_respelling_for_English
比较英语的IPA变体

https://en.wikipedia.org/wiki/English_language
各种标准英语及其特征
https://en.wikipedia.org/wiki/File:West_Germanic_languages_(simplified).png
https://en.wikipedia.org/wiki/English_language#Regional_variation
区域差异

6.6 英语拼写与阅读技巧

https://en.wikipedia.org/wiki/Digraph_(orthography)
有向图(正字法)

https://en.wikipedia.org/wiki/List_of_phonics_programs
语音课程列表

https://en.wikipedia.org/wiki/English_orthography
英语拼写(())
除了英语拼写系统从过去继承的怪癖之外,拼写中还有其他特性使得学习变得棘手。
根据方言,英语包含24-27个独立的辅音 音素和13-20 个元音。
但是,现代英语字母中只有26个字母,因此字母和声音之间没有一对一的对应关系
许多声音拼写使用不同的字母或多个字母,对于那些发音可以从拼写中预测的单词,由字母表示的声音取决于周围的字母。

https://en.wikipedia.org/wiki/Phonics
认知阅读技巧...
https://en.wikipedia.org/wiki/Phonics#Cognitive_reading_skills
https://en.wikipedia.org/wiki/Phonics#Vowel_phonics_patterns
https://en.wikipedia.org/wiki/Phonics#Consonant_phonics_patterns

https://zhuanlan.zhihu.com/p/21298089?refer=learnwithwind
一句话搞定一个音标

https://en.wikipedia.org/wiki/International_Phonetic_Alphabet
国际音标
https://en.wikipedia.org/wiki/International_Phonetic_Alphabet_chart
https://en.wikipedia.org/wiki/File:IPA_chart_2018.pdf
“近期行动计划”的官方图表,修订为2018年
https://en.wikipedia.org/wiki/File:Extended_IPA_chart_2005.png

https://en.wikipedia.org/wiki/International_Phonetic_Alphabet_chart_for_English_dialects
英语方言的国际音标字母表
此图表显示了国际音标(IPA)用于表示英语发音的最常见应用。
有关不同词典中使用的语音转录,请参阅英语的发音重新分析。
AuE, 澳大利亚 Australian English
CaE, 加拿大 Canadian English
GA, 美国 General American
InE, 印度 Indian English
IrE, 爱尔兰 Irish English
NZE, 新西兰 New Zealand English
RP, 英国 Received Pronunciation (Standard in the United Kingdom)
ScE, 苏格兰 Scottish English
SAE, 南非 South African English
SSE, 新加坡 Standard Singapore English
WaE, 威尔士 Welsh English

https://en.wikipedia.org/wiki/English_phonology
https://en.wikipedia.org/wiki/American_English
https://en.wikipedia.org/wiki/British_English
https://en.wikipedia.org/wiki/Great_Vowel_Shift

6.7 英语教学法

https://zh.wikipedia.org/wiki/溝通式教學法
沟通式教学法(英文:Communicative Language Teaching,CLT)是一种教授第二语言或外语的教学法,此教学法强调“互动(interaction)”的重要性,是语言学习的工具,也是其终极目标。

https://zh.wikipedia.org/wiki/全語言教育
全语言教育(Whole language approach)是一个从1990年代开始兴起的语言教学方法。全语言教育的教育目的在改进语文教学。虽然全语文教学的运动,在北美可以视为是对字母拼读法(phonics)教学的反思。但当全语文概念传入中文的语文教学时,其内涵及意义上都有一定程度的改变。
过去的沟通式教学法(Communicative approach),把语言的学习分为“听”、“说”、“读”、“写”四个范畴。根据全语言的理念,教导语言时,不该将语言分割成不同的技能,然后分别教授,而应该将语言视为是一个整体的沟通系统,让学习者够过亲身的经验来学习。

https://zh.wikipedia.org/wiki/合成拼音
合成拼音(synthetic Phonics 英国)或混合拼音(blended phonics美国)也称为归纳性拼音[1],是英文一种教学方法,针对阅读能力。
合成拼音的导师首先会教授每个字母的发音,学生建立了对字母发音的认识后,需要将这些发音混合在一起,发出一个生字的完整发音。

https://zh.wikipedia.org/wiki/基础语音教学法
基础语音教学法(Phonics)也称为字母拼读法[1]及自然发音法[2],是一种用于英语阅读和写作的英语教学方法,它通过提高学生的音素觉察(英语:Phonemic awareness)—听到、识别和操作音素的能力—教会他们对应发音和表示发音的拼写模式(字位)。

2019-09-01

Linux-C


Linux-C

1. C程序
 1.1 最简单的C程序hello.c
 1.2 多个源码文件
 1.3 头文件(include)和目录
 1.4 C预处理器
 1.5 连接库
 1.6 共享库
  1.6.1 列出共享库的依赖关系
  1.6.2 ld.so怎样找到共享库
  1.6.3 环境变量LD_LIBRARY_PATH
2. 编译管理工具make
 2.1 make常用选项
 2.2 make常用变量
 2.3 makefile常见的宏
 2.4 makefile常规目标
 2.5 教程手册
 2.6 GNU autotools 安装步骤
 2.7 configure 常用的选项
 2.8 Autotools的基础知识(Gentoo开发人员手册)
 2.9 更多相关链接
3. 调试器gdb
4. Lex和Yacc
5. 脚本语言
6. Java

1. C程序

最基本的生成过程: 代码,编译,运行. 编译就会用到C编译器。
来自LLVM项目的新的C编译器clang越来越流行;但大部分主流的Unix系统上仍然是GNU C编译器gcc。

1.1 最简单的C程序hello.c

#include <stdio.h>

main() {
    printf("Hello, World. \n");
}

源码文件(.c); -o编译为可执行文件(.out); 运行
编译 $ cc hello.c
会产生 a.out 的可执行文件
指定文件名编译,增加-o选项
$ cc -o hello hello.c
运行 $ ./a.out

1.2 多个源码文件

多个源码文件(.c); -c编译为对象文件(.o); -o连接为可执行文件; 运行
main.c, aux.c ...
使用-c选项给每个文件生成对应的对象文件
$ cc -c main.c
$ cc -c aux.c
产生对象文件: main.o, aux.o ...
对象文件是一种二进制文件。
使用连接器将对象文件组合为可执行文件
$ cc -o myprog main.o aux.o

更复杂的项目, 更多个源码文件, 需要使用make

1.3 头文件(include)和目录

保存类型和函数声明的附加文件,比如stdio.h
Unix默认的include目录是/usr/include, 编译器一般就看这里, 除非你指定其他地方。
$ cc -c -I /usr/junk/include text.c
使用-I选项指定头文件路径

#include <stdio.h>
#include "myheader.h"
<*.h>头文件在系统路径;
"*.h"表示头文件不在系统的include目录中, 通常表示它与源码在同一目录。

1.4 C预处理器

并不是C编译寻找头文件, 而是C预处理器(C preprocessor, cpp)。
C预处理器是编译器在解析程序之前先在源码上运行的一个东西。
C预处理器会将源码重写成一种编译器能理解的形式,使源码更易读(并提供捷径)。

源码中的预处理器命令叫做指令(directive), 以#开头, 分为如下三种。
inculde文件: #inculde * 使预处理器将整个文件包含进来。
宏定义: #define BLAH something 预处理器会将源码中所有BLAH替换为something, 约定宏名为大写。
条件: 可用 #ifdef, #if, #endif 来对代码进行分快。
#ifdef MACRO 指令用于检查宏MACRO是否已定义;
#if condition 则检查condition 是否非零。当预处理器发现if语句后的条件为false时,就不会将#if 和 #endif 之间的代码交给编译器。

注:也可以不在源码中定义宏,而使用编译器的-D选项,(-DBLAH=something)(#define BLAH something)
C预处理器并不懂C的任何语法,变量,函数或其他元素,它只看宏和指令。
Unix上的C预处理器是cpp,也可以用 gcc -E 来运行,不过一般很少需要单独运行预处理器。

1.5 连接库

所谓C库,就是一些已编译好的,通用的,可让你添加到自己程序的函数。例如很多可执行程序会用到的数学库...
库主要实在连接的时候(连接器从对象文件产生可执行程序时)发挥作用。
默认的库文件路径(/usr/lib)

使用编译器的 -l 选项连接库文件。
例如这里用到一般的gobject库文件是libgobject.a, 而库的名字是gobject. 所以完整的连接和编译如下:
$ cc -o textp textp.o -lgobject

使用 -L 选项指定库文件路径
例如库文件不在常规位置,而在/usr/junk/lib/libcrud.a
$ cc -o testp testp.o -lgobject -L/usr/junk/lib -lcrud

在库中搜索特定的函数,使用nm命令,nm libjobject.a, (可能要用locate命令查找libjobject.a, 很多发行版会将库放在/usr/lib特定的子目录)

1.6 共享库

名称以.a结尾的库是静态库。
连接静态库时,连接器会将库文件中的机器码复制到程序中。最终的可执行程序不需要该库也能运行。
使用静态库的优点是简单方便,不依赖环境。缺点也很明显:
  •   过多使用静态库,会使文件越来越大,占用空间。
  •   若库里的函数更新了,原有程序不会改变,需要重新编译才能使用到最新的库函数。
共享库即可解决这些问题。引用共享库的程序只会在需要时才将该库加载到内存中。而且多个进程可以共享内存中同一个共享库。
使用共享库的的缺点是管理困难,连接复杂。但只需搞定如下问题:
  •   如何列出程序需要的共享库;
  •   程序如何查找共享库;
  •   如何让程序连接共享库;
  •   常见的共享库陷阱。

1.6.1 列出共享库的依赖关系

共享库和静态库通常放在同一个地方,Linux的两大标准库目录/lib, /usr/lib. 其中/lib是不应该包含静态库的。
共享库的名字后缀通常含有.so(意为共享对象)
$ ldd /bin/bash
linux-vdso.so.1 (0x00007fff77fe7000)
libreadline.so.8 => /usr/lib/libreadline.so.8 (0x00007f60035ec000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f60035e7000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f6003424000)
libncursesw.so.6 => /usr/lib/libncursesw.so.6 (0x00007f60033b5000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f6003750000)
考虑到最佳性能和灵活性,可执行程序本身通常不知道它所用的共享库在哪里,只知道共享库名字,或只知道一点点寻找共享库的提示,如上左边是共享库名字。
ld.so(运行时动态连接器/加载器)可以为程序在运行时找到并加载共享库。如上ldd输出的右边是ld.so找到的库的位置。
最后一行显示了ld.so的实际位置。

1.6.2 ld.so怎样找到共享库

通常的顺序是如下的步骤(1),(2); 特殊情况才会使用(0)这个步骤。
  • (0) 参考环境变量LD_LIBRARY_PATH.(没有源码,又不能使用patchelf指定,就可以用这个了)
  • (1) 通常首先查找(可执行程序预先配置好的运行时搜索路径(如果有配置) runtime library search pach, 简称rpath);
  • (2) 接着,会参考系统缓存/etc/ls.so.cache, 看看该库是否在常规的位置。这是从缓存配置文件/etc/ld.so.conf中的目录列表获取的库文件名字的快速缓存。
注: 如其他配置文件一样,ld.so.conf 可能会包含 /etc/ld.so.conf.d中的配置。
标准的库目录/lib和/usr/lib是隐式的,即不需要包含在如上的配置文件中。
如果改动了ld.so.conf或者改动了某个共享库的目录,需要重建共享库缓存
$ ldconfig -v
-v 选项会输出被ldcongfig添加到缓存的目录的详细信息和他所监测到的改动。

编译时指定程序的rpath
$ cc -o test test.o -Wl,-rpath=/opt/obscure/lib -L/opt/obscure/lib -lweird
已编译的程序可用pathchelf加入不同的rpath, 不过最好还是在编译时就做好。

1.6.3 环境变量LD_LIBRARY_PATH

环境变量LD_LIBRARY_PATH, 用冒号分隔多个路径。如非必要,请勿滥用。
* 永远都不要在启动文件中或在编译软件时设置LD_LIBRARY_PATH。
在没有源码,又不能使用patchelf指定路径,最后的办法。
但也请将它嵌套进shell脚本里。例如:
#!/bin/sh
LD_LIBRARY_PATH=/opt/crummy/lib
export LD_LIBRARY_PATH
exec /opt/crummy/bin/crummy.bin $@

不使用 LD_LIBRARY_PATH 避免大部分共享库问题,但还可能遇到应用程序接口API的改变,导致装好的软件异常。
最好的解决办法就是预防,在安装库时也使用 -Wl, -rpath, 或者使用静态库。

2. 编译管理工具make

您需要一个名为makefile的文件来告诉您make该怎么做。通常,makefile告诉make如何编译和链接程序。

make有自己内置的规则,当你需要.o文件时,他就会自动去找.c文件,并会对.c文件运行cc -c命令,已达到获得.o文件的目标。
编译时通过一个 Makefile 文件进行,把这个 Makefile 文件置于 hello.c 同一目录下.

make命令的使用
大多数的make都支持“makefile”和“Makefile”这两种默认文件名。
特定的Makefile,你可以使用make的“-f”和“--file”参数,如:make -f Make.Linux。

Makefile对格式有要求。
注释#开头; 宏定义; 目标:描述; 都顶头开始,前面不需要空格或tab缩进。
任何真实的命令前面都必须要有tab键(不能使用空格键)。

2.1 make常用选项

  •  -f FILE, 将FILE文件作为makefile。
  •  -n, 显示一次构建所要用到的命令,但并不执行。
  •  -p, 打印make的内部数据库。
  •  -d, 打印大量调试信息。
  •  --trace, 打印跟踪信息。

2.2 make常用变量

$* 当前目标的基名。 f1.txt, $*就代表这里的f1
$< 指第一个前置条件。
$@ 写在规则里时,表示当前目标。
$(@D) $(@F) 分别指$@目标的目录名和文件名。
$(<D) $(<F) 分别指$<条件的目录名和文件名
$? 比目标更新的所有前置条件。 t: p1 p2, 若p2时间戳比t新,$?就代表p2
$^ 指所有前置条件,之间空格分隔。

2.3 makefile常见的宏

CFLAGS C编译器选项。make会将这个选项作为参数,在将.c变为.o的阶段传给编译器。
LDFLAGS 类似CFLAGS, 不过他是在将.o变为可执行程序的阶段传给编译器。
LDLIBS 如果使用了LDFLAGS,但不想库名选项与查找路径混在一起,可以将库名选项写在这里。
CC C编译器,默认是cc。指定为clang可用 $ make CC=clang
CPPFLAGS C预处理器选项。make运行预处理器时,将其作为参数。
CXXFLAGS GNU使用这个宏作为C++编译器选项。

2.4 makefile常规目标

clean 通常会吧所有对象文件和可执行程序都清掉,以便重新构建或者打包软件。 rm -f … //这个目标无处不在
distclean 它能删除原包以外的所有东西,包括Makefile。有些可发者更喜欢用 realclean.
//GNU autotools所生成的Makefile总会有这个目标。
install 将文件和编译好的程序放到Makefile认为适当的地方。可能有风险,最好先用make -n install看看会放在哪里。
test 或 check 检验构建出的东西是否可用。
depend 通过编译器的-M选项来检查源码,以建立依赖关系。 //这是一个不寻常的目标,因为它经常会改动Makefile自身。
all 通常是Makefile的地一个目标

https://www.gnu.org/software/make/manual/make.html#Makefile-Contents
Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。
  • 显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。
  • 隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。
  • 变量的定义。在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。
  • 文件指示。其包括了三个部分,
    • 一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;
    • 另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;
    • 还有就是定义一个多行的命令。有关这一部分的内容,我会在后续的部分中讲述。
  •  注释。Makefile中只有行注释,和UNIX的Shell脚本一样,其注释是用“#”字符,这个就像C/C++中的“//”一样。如果你要在你的Makefile中使用“#”字符,可以用反斜框进行转义,如:“\#”。

2.5 教程手册

入门简易版
https://zhuanlan.zhihu.com/p/47390641
Makefile由浅入深--教程、干货

《Makefile文件教程》
https://gist.github.com/isaacs/62a2d1825d04437c6f08

http://www.ruanyifeng.com/blog/2015/02/make.html
Make 命令教程  阮一峰  2015年2月20日
http://www.ruanyifeng.com/blog/2015/03/build-website-with-make.html
使用 Make 构建网站

完整版《GNU Make手册》
https://www.gnu.org/software/make/manual/make.html

https://seisman.github.io/how-to-write-makefile/introduction.html
跟我一起写Makefile
https://blog.csdn.net/ruglcc/article/details/7814546
https://blog.csdn.net/haoel/article/details/2886

2.6 GNU autotools 安装步骤

GNU autoconf 是一套流行的,用于自动产生Makefile的系统。解决跨平台的问题。
使用此套系统的包都会带有 configure, Makefile.in, config.h.in文件。其中.in是模板文件。

默认生成的Makefile中的install目标通常使用/usr/local作为前缀;二进制程序会去到/usr/local/bin. 库会到/usr/local/lib.
GUN autoconf及很多其他软件包的默认前缀都是/usr/local。他是本地安装软件的传统位置。操作系统不会更新/usr/local里的软件。所以更新不会是你哪里的东西丢失。

使用这类带配置的源码包安装步骤大致如下:
01 下载: 官网下载...
02-1 验证签名: $ gpg --verify *.sig . 验证签名
02-2 验证文件: $ md5sum 验证文件. md5sum,sha1sum,sha256sum验证文件。
03-1 包内容: $ tar -tvf 首先用t选项查看,避免有绝对路径等问题;
03-2 解包: $ tar -xvf[压缩选项] 再使用xvf[压缩选项]解包。
04 查看说明: $ cat readme 查看自述文件,install安装说明等
05 配置: $ ./configure 分析当前系统的特性,然后在Makefile.in文件的基础上做一些替换,创建出适合本机的构建文件:Makefile
06-1 空跑: $ make -n 显示一次构建所要用到的命令,但并不执行。
06-2 编译: $ make
07 检查: $ make check 若了解程序,也可是尝试运行生成的可执行文件。
08-1 空跑: $ make -n install 空跑一次,查看安装那些东西到哪里。
08-2 安装: $ make install
09 清理: $ make clean 清除编译连接过程中的一些临时文件
10 卸载: $ make uninstall 卸载相关应用程序

2.7 configure 常用的选项

  • --prefix=directory:  指定安装位置。
  • --bindir=directory: 指定可执行程序位置。
  • --sbindir=directory: 指定系统级的可执行程序位置。
  • --libdir=directory: 指定库位置。
  • --disable-shared: 不构建共享库(要看具体什么库)。
  • --with-package=directory: 告诉configure需要用到=directory: 目录的包。当某个库不在标准位置时,使用这个选项。但并非所有的configure脚本都能识别这个选项。

2.8 Autotools的基础知识(Gentoo开发人员手册)

https://devmanual.gentoo.org/general-concepts/autotools/index.html
主要的Autotools组件
Autotools是相关软件包的集合,当它们一起使用时,消除了创建便携式软件所涉及的许多困难。这些工具以及一些相对简单的上游提供的输入文件用于为包创建构建系统。https://devmanual.gentoo.org/general-concepts/autotools/diagram.png

在一个简单的设置:
  • 该autoconf程序configure从任一configure.in或产生一个脚本 configure.ac(见下面的注释)。
  • 该automake程序产生一个Makefile.in来自Makefile.am。
  • configure运行 该脚本以Makefile从 Makefile.in文件生成一个或多个文件。
  • 该make程序使用Makefile编译程序。
...

https://wiki.gentoo.org/wiki/Autotools
Autotools是一个在开源项目中常用的构建系统。虽然很常见,但并非每个开发人员都喜欢使用自动工具。一些项目试图避免这种构建系统。

https://devmanual.gentoo.org/eclass-reference/autotools.eclass/index.html
autotools.eclass - 重新生成auto *构建脚本
此eclass用于安全处理需要重新生成其构建脚本的自动化软件包。如果出现错误,所有功能都将中止。

https://wiki.gentoo.org/wiki/Comparison_of_build_systems
构建系统的比较 - 提供各种构建系统的简要比较。
https://en.wikipedia.org/wiki/List_of_build_automation_software#Build_script_generation_tools

2.9 更多相关链接

http://www.gnu.org/software/autoconf/
http://www.gnu.org/software/automake/

https://autotools.io/index.html
Autotools Mythbuster  Diego Elio “Flameeyes” Pettenò   作者和出版商 <flameeyes@flameeyes.com>
Autotools Mythbuster是一个严肃的Autotools指南,旨在提供GNU构建链中工具的完整集成视图:autoconf,automake,libtool,pkg-config等。

https://blogs.gentoo.org/lu_zero/2009/03/24/cmake-vs-autotools-a-benchmark/

==============
https://devmanual.gentoo.org/eclass-reference/autotools-utils.eclass/index.html
autotools-utils.eclass - 基于autotools的软件包的常见ebuild函数

==============
https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Autotools_failures
本指南旨在描述使自动工具无法在ebuild中运行的常见情况,并提供有关如何解决这些问题的建议。
介绍
与术语自动工具,我们通常所说的由GNU工程创建平台和操作系统无关构建系统,开发工具autoconf,automake和libtool。虽然并非每个包装都同时使用所有包装,但大多数现代包装都是这样做的; 旧的包通常不使用automake和libtool替代; KDE包使用更复杂的构建系统,最终依赖于上述三个软件。

很容易识别构建系统基于autotools的软件包:
  • 如果有配置脚本,以及configure.in或configure.ac文件,构建系统基于autoconf ;
  • 如果各个子目录中有一个或多个Makefile.am文件,它也是automake基于;
  • 如果有一个ltmain.sh脚本,它也在使用libtool。

要构建一个使用基于autotools的构建系统的软件包,这些工具本身并不是绝对需要的:configure脚本是一个简单的Bourne Shell脚本(通常,但这将在最近讨论)并将Makefile.in文件转换为简单的Makefile的make(或者,更多的时候,gmake)。尽管它们是构建软件的可选项,但解决诸如--as-need构建失败或自动依赖性等问题所需的补丁通常需要重新运行工具来重新创建脚本和makefile的模板。

本指南不会说明如何使用autotools修复软件包的错误,因为这是一个需要解释很多内容的广泛主题。有关使用autotools时最常见错误的简单介绍,建议使用autotools文章阅读最佳实践。相反,它将描述重新运行autotools导致失败的常见情况,无论是在重建脚本还是在构建时。
================

https://en.wikipedia.org/wiki/GNU_Build_System
https://en.wikipedia.org/wiki/Automake
https://en.wikipedia.org/wiki/Configure_(computing)
https://en.wikipedia.org/wiki/Make_(software)
https://en.wikipedia.org/wiki/Autoconf
https://en.wikipedia.org/wiki/CMake

https://en.wikipedia.org/wiki/Meson_(software)
https://en.wikipedia.org/wiki/Configure_script
https://en.wikipedia.org/wiki/Pkg-config

https://en.wikipedia.org/wiki/GNU_Debugger
https://en.wikipedia.org/wiki/GNU_Bison
https://en.wikipedia.org/wiki/Berkeley_Yacc

https://en.wikipedia.org/wiki/GNU_Compiler_Collection
https://en.wikipedia.org/wiki/List_of_compilers
此页面旨在列出所有当前编译器,编译器生成器,解释器,转换器,工具基础,汇编程序,可自动执行的命令行界面(shell)等。

===========
https://en.wikipedia.org/wiki/List_of_GNU_packages
GNU包列表
GNU工具链
主要文章:GNU工具链
  • GNU Binutils - 包含GNU汇编程序(as)和GNU链接程序(ld)
  • GNU bison - 用于替换yacc的解析器生成器
  • GNU构建系统(autotools) - 包含Autoconf,Automake,Autoheader和Libtool
  • GNU Compiler Collection - 针对许多编程语言优化编译器,包括C,C ++,Fortran,Ada和Java
  • GNU调试器(gdb) - 一种高级调试器
  • GNU m4 - 宏处理器
  • GNU make - 为GNU制作程序
https://wiki.archlinux.org/index.php/GNU#Build_system
https://www.gnu.org/

构建系统autotools
autoconf
CMake
SCons

3. 调试器gdb

gdb 全称是 GNU Debugger,是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。
gdb 主要可帮助工程师完成下面 4 个方面的功能:

启动程序,可以按照工程师自定义的要求随心所欲的运行程序。
让被调试的程序在工程师指定的断点处停住,断点可以是条件表达式。
当程序被停住时,可以检查此时程序中所发生的事,并追索上文。
动态地改变程序的执行环境。

https://wiki.archlinux.org/index.php/Debug_-_Getting_Traces
https://wiki.archlinux.org/index.php/Step-by-step_debugging_guide
https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces#Introducing_gdb
$ gdb -q /bin/ls
Reading symbols from /bin/ls...
(No debugging symbols found in /bin/ls)
(gdb) set args /usr/share/fonts
(gdb) run
Starting program: /usr/bin/ls /usr/share/fonts
OpenImageIO  adobe-source-code-pro  cantarell  gsfonts misc  noto-cjk
TTF      adobe-source-han-sans  encodings  mathjax noto
[Inferior 1 (process 26487) exited normally]
(gdb) q

界面友好的 Eclipse IDE 和 Emacs 系统也是Linux支持的。
想挖掘内存问题和生成统计信息,试试 Valgrind http://valgrind.org

https://www.ibm.com/developerworks/cn/linux/1508_zhangdw_gdb/index.html
使用 GDB 和 KVM 调试 Linux 内核与模块

4. Lex和Yacc

如果你要编译的程序需要读取配置文件或命令,那你可能要用到Lex和Yacc。这两个工具是用于制作编程语言的。

Lex, Lexical Analyzar 词法分析器的生成器,能将文本内容转换成一个个标记。
GNU/Linux版本叫做flex。可以使用编译器的-ll或-lfl连接器标记来连接Lex库。

Yacc, Yet Another Compiler Compiler 语法解析器的生成器,能根据语法来读取标记。
GNU的解析器是 bison。为使生成的语法分析器能与yacc兼容,需要执行bison -y。可以使用编译器的-ly连接器标记来连接Yacc的库。

https://www.ibm.com/developerworks/cn/linux/sdk/lex/index.html
Yacc 与 Lex 快速入门

Lex
Lex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。 这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义。
Lex 和 C 是强耦合的。一个 .lex 文件(Lex 文件具有 .lex 的扩展名)通过 lex 公用程序来传递,并生成 C 的输出文件。这些文件被编译为词法分析器的可执行版本。

Lex 编程可以分为三步:
以 Lex 可以理解的格式指定模式相关的动作。
在这一文件上运行 Lex,生成扫描器的 C 代码。
编译和链接 C 代码,生成可执行的扫描器。

一个 Lex 程序分为三个段:
第一段是 C 和 Lex 的全局声明,第二段包括模式(C 代码),第三段是补充的 C 函数。
例如, 第三段中一般都有 main() 函数。这些段以%%来分界。

Yacc
Yacc 代表 Yet Another Compiler Compiler。 Yacc 的 GNU 版叫做 Bison。它是一种工具,将任何一种编程语言的所有语法翻译成针对此种语言的 Yacc 语 法解析器。它用巴科斯范式(BNF, Backus Naur Form)来书写。按照惯例,Yacc 文件有 .y 后缀。

用 Yacc 来创建一个编译器包括四个步骤:
通过在语法文件上运行 Yacc 生成一个解析器。
说明语法:
编写一个 .y 的语法文件(同时说明 C 在这里要进行的动作)。
编写一个词法分析器来处理输入并将标记传递给解析器。 这可以使用 Lex 来完成。
编写一个函数,通过调用 yyparse() 来开始解析。
编写错误处理例程(如 yyerror())。
编译 Yacc 生成的代码以及其他相关的源文件。
将目标文件链接到适当的可执行解析器库。

如同 Lex 一样, 一个 Yacc 程序也用双百分号分为三段。 它们是:
声明、语法规则和 C 代码。


5. 脚本语言

Unix中,所有#!开头的可执行文本文件都是脚本,后面的路径是该脚本的解释器。
#!/usr/bin/python
#!/usr/bin/env python
#!/usr/bin/tail -2

常见的脚本语言
  • Python: 文本处理,数据库访问,网络编程,多线程等,支持者众多。还有强大的交互模式和一套有组织的对象模型。David M. Beazley, Python Essential Reference, 4th edition (Addison-Wesley, 2009)
  • Perl: 是Unix上较为老旧的第三方脚本语言。是编程界的“瑞士军刀”,近年被Python超越。
  • PHP: 超文本处理语言,常用于动态网页编程。http://www.php.net
  • Ruby: 面向对象的爱好者和Web开发者尤其喜欢。http://www.ruby-lang.org
  • JavaScript: 有一种实现Node.js,可执行程序是node。
  • Emacs Lisp: Lisp语言的一个变种。
  • Matlab和Octave: Matlab是一套商业矩阵及数学编程语言和库。Octave是类似Matlab的免费软件。
  • R: 流行的免费统计分析语言。http://www.r-project.org
  • Mathematica: 商业的数学编程语言和库。
  • m4: 宏处理语言,常见与GNU autotools。
  • Tcl: 工具命令语言,是一种简单的脚本语言,其扩展有图形界面的Tk和自动化工具Expect。http://tcl.tk

6. Java

Java跟C一样都是编译型语言,他有更简单的语法和强大的面向对象能力。
多用于Web应用和一些特定的应用。Android应用就通常使用Java来开发的。

Java编译器分为两种:
用于生成机器码供系统使用的本地编译器(如C编译器);
字节码解释器(有时也叫虚拟机)使用的字节码编译器。在Linux上看到的Java程序都是字节码。(.class文件)

Java运行时环境(Java Runtime Environment, JRE)包含了运行Java字节码所需的程序。运行一个字节码:
$ java file.class
$ java -jar file.jar
(.jar)文件是由一堆.class文件打包而成的字节码文件。

有时需要将java的安装路径设置到JAVA_HOME环境变量中,甚至可能还需要使CLASSPATH变量包含你程序需要的所有class文件目录。

需要使用(Java Development Kit, JDK)Java开发工具,将.java文件编译为字节码:
$ javac file.java
JDK还包含了jar程序,创建和拆分.jar文件,用法类似tar。





Linux-tar


Linux-tar

1. tar简介
2. tar文件
3. tar常用选项
4. tar基本用法(不压缩)
5. tar特殊用法

1. tar简介

https://zh.wikipedia.org/wiki/Tar
Unix和类Unix系统上的压缩打包工具,可以将多个文件合并为一个文件,打包后的文件名亦为“tar”。目前,tar文件格式已经成为POSIX标准,最初是POSIX.1-1988,目前是POSIX.1-2001。本程序最初的设计目的是将文件备份到磁带上(tape archive),因而得名tar。

2. tar文件

tar代表未压缩的tar文件。已压缩的tar文件则附加压缩文件的扩展名,如经过gzip压缩后的tar文件,扩展名为“.tar.gz”。
由于受到DOS8.3文件名格式的限制,常使用下列缩写:
tar选项 缩写后缀 完整后缀 压缩命令 解压命令1 解压命令2
-j, *.tb2; tbz *.tar.bz2; *.tar.bz bzip2 -z bzip2 -d bunzip2
-z, *.tgz *.tar.gz gzip gzip -d gunzip
-Z, *.taz *.tar.Z compress uncompress
-J, *.txz *.tar.xz


--lzma *.tlz *.tar.lzma



3. tar常用选项

主要操作方式:
-c, --create 创建一个新的存档
-t, --list 列出档案的内容
-x, --extract, --get 从存档中提取文件
-r, --append 将文件附加到存档的末尾
-u, --update 只附加比归档中的副本更新的文件
-A, --catenate, --concatenate 将tar文件作为整体追加到另一个tar文件中
-d, --diff, --compare 找到存档和文件系统之间的差异

--delete 从档案中删除(不在磁带上!)

--test-label 测试存档卷标并退出

压缩选项:
-j, --bzip2 通过bzip2过滤存档
-z, --gzip, --gunzip, --ungzip 通过gzip过滤存档
-Z, --compress, --uncompress 通过压缩过滤存档
-J, --xz 通过xz过滤存档

--lzma 通过lzma过滤存档

--lzip 通过lzip过滤存档

--lzop 通过lzop过滤存档

--zstd 通过zstd过滤存档
-a, --auto-compress 使用存档后缀来确定压缩程序

--no-auto-compress 不要使用存档后缀来确定压缩程序

其他常用选项:

Device selection and switching:
-f, --file=ARCHIVE 使用存档文件或设备存档. 
可以用"-"代表标准输出或标准输入。

Informative output:
-v, --verbose 详细列出已处理的文件

Overwrite control:
-k, --keep-old-files 提取时不要替换现有文件,将它们视为错误

Local file selection:
-P, --absolute-names 不要从文件名中删除前导'/'。即绝对路径

4. tar基本用法

不压缩
-c 打包 $ tar -cvf archive.tar file1 file2
-t 查看 $ tar -tvf archive.tar
-x 解包 $ tar -xvf archive.tar

增加压缩,只需要参照上面的选项,添加对应的压缩选项即可。

5. tar特殊用法

使用tar复制文件夹
$ tar cf – toma | (cd targer; tar xvf -)
高效的复制了toma中的文件和目录,还保留了权限。注: 'f'后边跟'-',从stdin读取数据.

解开C源码包的注意事项
软件源码包,通常是tar的压缩包。解包前先用tvf选项+压缩选项检查源码包内容。
1. 有些源码包解开时不会建立自己的总目录,会把全部放到当前目录下。这种要进入手动建立的文件夹后再解包。
2. 要留意那些包含绝对路径名的文件。可能包含木马或一些恶意代码。


Diode

导航 (返回顶部) 1. Diode 1.1 Diode 概述 1.2 肖克利二极管方程 1.3 缩写 Abbreviations 2. 主要功能 2.1 单向电流 (Unidirectional current flow) 2.2 阈值电压 (Threshold...