Mac电脑C语⾔开发的⼊门帖
本⽂是写给Mac电脑开发新⼿的⼊门帖,诸神请退散。
C语⾔
C语⾔可说是电脑环境中的“镇国神器”,从发明⾄今,虽然C语⾔的使⽤者缓慢的减少,但从当前市场应⽤情况看,尚⽆⼀台电脑能够摆脱C 语⾔的⽀撑⽽⽣存。
此外由于⼤多数主流操作系统都主要使⽤C语⾔编写,使得C语⾔跟操作系统结合最为紧密,从⽽更容易对整体电脑深⼊了解。所以对电脑相关类专业的学⽣,C语⾔仍然是必修课。
最后就是近⼏年,随着物联⽹、嵌⼊式开发的进展,效率最⾼、资源需求最少的C语⾔,⼜成为了很多项⽬的不⼆选择。
Mac电脑作为类Unix类操作系统的代表,C语⾔也是天⽣具备的。很多Mac电脑即便不⽤于软件开发,也会因为各种免费开源软件的使⽤,在依赖包中⾃动安装了gcc的⽀持,从⽽具备了C语⾔的开发环境。
安装开发环境
在Mac电脑上进⾏C语⾔开发有两种⽅式,⼀是使⽤图形界⾯(GUI)进⾏开发,这种情况使⽤苹果⾃主开发的Xcode开发⼯具。⼆是使⽤纯命令⾏的开发⼯具gcc或者clang配合vim编辑器。前者适合⼤规模项⽬的开发,后者简洁⾼效,相对来说适合开发⼩规模的程序或者应急的修修补补。
安装Xcode唯⼀合法的⽅法是在Mac电脑打开App Store程序,在右上⾓搜索框中输⼊"Xcode",从搜索到的结果中⼀般前1、2位就是Xcode,然后点选“获取”或者“安装”。Xcode容量⽐较⼤,⼀般安装包都在4.5G-6G之间,依据⽹络的情况,需要等待不短的时间。安装完成后,第⼀次运⾏Xcode会提⽰安装命令⾏⼯具,按照提⽰就会⾃动安装clang命令⾏开发⼯具。命令⾏开发包⼀般是100多M,下载安装都会⽐较快。
概念和选择
上⼀节说到了Xcode是⼀个图形界⾯的开发环境,习惯上也叫做集成开发环境(IDE)。因为建⽴⼯程、编辑输⼊代码、编译、测试甚⾄打包和发布,都在这个统⼀的图形界⾯中,⼤多功能都是动动⿏标就能完成,所以⽐较适合初学者。
在Windows电脑上对应的⼯具是微软Visual Studio系列,事实上在Windows上⼏乎99%的程序员都只⼯作在集成开发环境下,⼤多数⼈⼏乎都已经没有能⼒在命令⾏下⼯作了,这种退化害了很多⼈。
Mac的命令⾏C语⾔开发⼯具主要有两种,clang及gcc,前者是苹果官⽅推荐的,Xcode也使⽤Clang进⾏编译。后者则是GNU开源社区推荐的,并且被⼤多数linux⽀持。两者在语法的兼容性上⼏乎没有差别,⽤了⼏年也只碰到1、2次很⼩的不同。⽽Clang在于错误信息、编译速度等⽅⾯有很多优势。所以我也建议就⽤Clang吧,如上所述,安装Xcode,随后安装命令⾏⼯具包,所需的这些⼯具就都有了。在⼀台电脑中很可能刚才说的Xcode/Clang/Gcc同时都安装了,放⼼,他们互相不会打架的。
在命令⾏状态下,为了完成编程⼯作,实际上还需要⽂本编辑软件和⼯程管理软件,后者可以⽤以前⽂章提过的Makefile系统。另外初学者代码量都不会多,⼀般1、2个⽂件了不起了,可以先忽略⼯程⽅⾯的问题。⽂本编辑推荐使⽤Mac已经内置的vim编辑程序。在社区中还有很⾼呼声的emacs,但⼀是考虑初学者上⼿;⼆是考虑当前年代C语⾔的主要⽤途⽅向;三则纯属个⼈偏好,我推荐使⽤vim。实际上,只要你掌握了这种编程的⽅式,使⽤第三⽅提供的图形化编辑器也是完全可以的,⽐如常见的UltraEdit/TextMate,都是很优秀的编辑软件。但前提⼀定是vim你已经真正掌握,牢记于⼼了,这种看起来不起眼的⼩能⼒,将来会⼤⼤的扩展你的⼯作适应空间。
额外补充⼀句,虽然上⼀节我说了Xcode这样的集成环境适合⼤的项⽬,命令⾏适合⼩的项⽬或者修修补补,但事实上在开源社区中,命令⾏所产⽣的代码量仍然是最⾼的,⼏乎你知道的真正⼤规模系统都是以命令⾏为主要⽅式开发出来的,这⾥只提⼀个,⽐如Linux操作系统本⾝。所以归根结底,⼯具就是⼯具,最终还是靠⼈的能⼒。
vim编辑器下载与安装
vim简要⼊门
vim是命令⾏下重要的⽂本编辑⼯具。命令⾏也就是“终端”app,启动命令⾏的⽅式除了在Launchpad中翻图标之外,也可以在电脑右上⾓选择放⼤镜“spotlight”,或者使⽤SpotLight的快捷键:COMMAND+空格,然后在其中搜索Terminal,搜索到了之后⽤⿏标点击运⾏就可以进⼊命令⾏。
(终端.app,也叫Terminal.app、命令⾏,图标长这样⼦)
⾄少在macOS10.10以后,系统中已经内置了vim⼯具。如果你的系统没有vim软件,可以使⽤命令brew install vim来安装,brew是包管理器,⽤于管理Mac电脑上的开源软件。brew的安装可以查看以前的⽂章。
运⾏vim的⽅法是在命令⾏状态键⼊命令vim 要编辑的⽂本⽂件名。
这⾥插⼀条命令⾏操作的知识,当前正在输⼊的命令⾏,ctrl-a是将光标移动到当前⾏头⼀个字符;ctrl-e是将光标移动到当前⾏最后⼀个字符,移动光标是为了在输⼊命令的时候编辑输⼊错误的部分。补充在这⾥,是为了你可以跟下⾯vim的操作对应区别着记忆。
vim默认不⽀持⿏标,具有3种⼯作状态,分别是“光标状态”、“输⼊状态”、“命令状态”。刚刚进⼊vim的时候就是在光标状态,这个状态下有以下⼏种常见操作:
i 向上移动光标
j 向左移动光标
k 向下移动光标
l 向右移动光标
Mac电脑,上下左右光标键可以起到跟上⾯ikjl字母键⼀样的作⽤,但字母键操作更快。此外有⼀些电脑,光标键是不起作⽤的。
ctrl+f 向后翻页
ctrl+b 向前翻页
$ 移动光标到当前⾏最后⼀个字符
0 移动光标到当前⾏第⼀个字符
gg 光标移动到第⼀⾏
G 光标移动到最后⼀⾏
i 从当前光标位置字符之前开始插⼊⽂本,vim进⼊“输⼊状态”
a 从当前光标位置字符之后开始追加⽂本,vim进⼊“输⼊状态”
o 从当前⾏之后开始追加⼀⾏⽂本,vim进⼊“输⼊状态”
vim在“输⼊状态”可以输⼊字符、回车换⾏、回格删除前⼀个字符(包括回车换⾏符)
ESC 键结束输⼊,回到“光标状态”
yy 拷贝光标所在当前⾏到缓冲区(相当于剪贴板,但与通常电脑的剪贴板不是⼀个,不能互相粘贴)
p 把缓冲区内容插⼊粘贴到当前光标⾏之后的⼀⾏
x 删除光标所在的⼀个字符
dd 删除光标所在的⼀⾏
:光标移动到屏幕最下⾯⼀⾏,并进⼊“命令状态”。
ESC键结束“命令状态”,返回“光标状态”,这跟从“输⼊状态”返回“光标状态”⼀样。
下⾯讲述命令状态的⼏个操作:
w 将⽂件存盘
q 退出vim,回到命令⾏。如果⽂件被改变了,但没有存盘,会有警告信息,使⽤q!可以忽略警告信息直接退出。
x 存盘并且退出
0 光标跳到第⼀⾏
nn nn代表⼀个数字,表⽰跳到第nn⾏
跳到⽂件最后⼀⾏,注意0和跟“光标状态”移动光标到⾏⾸和⾏末的操作很相似,再注意“光标模式”下也有移动光标到第⼀⾏、最后⼀⾏的⽅法,可以对照记忆
好了,掌握这些,你就可以编辑c语⾔的程序了。这部分学习的技巧是先记住必须、常⽤的,其它的可以打印出来当做速记卡放在显⽰器旁边,边⽤边记,⼀般强化记忆1、2天就能差不多了。
vim是从80年代的vi编辑器基础和发展过来的,历史已经⽐很多新⼊⾏的学习者年龄都⼤。经过这么多
年的发展,已经有了很多扩展功能和定制功能,如果你⽤起来感觉还不错的话,建议在⽹上搜索⼀些更详细的教程,深⼊的了解⼀下。
使⽤vim开始我们的C语⾔之旅的第⼀个程序
习惯上⼈们都把第⼀个程序称为“Hello World”,原因就是,这第⼀个程序,⼀般只打印⼀⾏“Hello World”到屏幕上。
1. 在命令⾏,⾸先建⽴⼀个⼯作⽬录,我们所有的程序、正式⽂件、临时⽂件、结果⽂件,都保存在这⾥⽬录中,这是保持电脑整洁的
⼀个习惯。命令⾏建⽬录的命令是:mkdir cfiles,这样就在当前⽬录下,建⽴了⼀个cfiles⽬录。⼀般命令⾏刚打开的时候会是在⽤户的主⽬录,主⽬录在Mac/Linux系统中也缩写为~符号,那cfiles⽬录完整的写下来也就是~/cfiles,中间的除法符号/是多个⽬录名称之间的间隔符。
2. 进⼊我们的⼯作⽬录,在命令⾏敲⼊:cd cfiles,这样以后的操作,默认就是在~/cfiles⽬录⼯作了。
3. 快捷键COMMAND+C拷贝下⾯的程序到剪贴板。
#include <stdio.h>
int main(){
printf("Hello World!\n");
return 0;
}
这篇不是C语⾔的编程⽂章,因此不解释程序本⾝的含义,有很多C语⾔的编程书可以⽤了。我们只继续说我们下⾯怎么做。
4. 命令⾏敲⼊vim helloworld.c,这是使⽤vim编辑⼀个名为helloworld.c的⽂本⽂件,这个⽂件现在还不存在,所以我们是新建这样⼀个⽂件。
5. 在vim中,敲i键进⼊插⼊状态,随后COMMAND+V把剪贴板中的代码粘贴出去。刚才讲vim的时候说了,yy也是拷贝的意思,但是vim的剪贴板,跟Mac操作系统的剪贴板不是⼀个,所以vim的yy跟vim的p是对应的。Mac的COMMAND+C跟COMMAND+V是对应的,互相之间不能拷贝粘贴。
6. 按ESC键从“输⼊状态”返回到“光标状态”,然后按:再切换到“命令状态”,随后按x保存⽂件,并退出vim。helloworld.c会保存在当前⽂件夹,也就是~/cfiles⽂件夹,这就是当前⽂件夹的作⽤。
7. 在命令⾏输⼊gcc -o helloworld helloworld.c,这条命令就是编译helloworld.c程序,编译完成,输出为当前⽂件helloworld⽂件。正常情况下,编译会很快结束,并且没有错误信息。此外这⾥使⽤gcc进⾏了c语⾔程序的编译,但并不⼀定真的是gcc系统,在Mac电脑上默认是使⽤
clang系统,只是为了兼容也伪装成了gcc的调⽤⽅式⽽已。这些知道就成,程序员没有必要过多了解,这些编译器互相都是兼容的。
8. 命令⾏输⼊./helloworld回车执⾏,屏幕上会出现⼀⾏“Hello World!”,这表⽰我们编辑⼀个C程序,然后编译、并且运⾏验证成功了。
以上就是在命令⾏编辑程序⽂件,编译并运⾏所需知道的所有知识。接下来就是你按照C语⾔课本的要求进⾏你的各项编程实验了。
PS:截⽌以上,利⽤命令⾏编辑、编译C语⾔的⽅法,在Linux电脑上,也⼏乎完全⼀样。可能就是拷贝、粘贴在Linux系统是Ctrl-C及Ctrl-V,如果是远程终端,则依赖终端所在客户端的操作系统操作⽅法。vim操作、gcc命令是完全相同的。
Xcode
1. 刚进⼊Xcode就有⼀个启动界⾯,从左侧第⼆⾏选择“Create a new Xcode project”,在下⼀个出现
的对话框中,选择程序类型。Xcode
可以开发iOS/watchOS/tvOS/macOS/Cross-platform五种应⽤,这⾥选择macOS,表⽰是运⾏在桌⾯电脑上⾯的应⽤程序。第⼆⾏选择“Command Line Tool”表⽰是命令⾏⼯具程序,接着选Next。
2. 接着输⼊应⽤的名字,我们刚才在命令⾏状态起的名字是helloworld,这次可以叫firstc,随你喜好。第⼆⾏是你的开发组织,因为使⽤
的AppleID没有开发者⾝份,所以就使⽤默认的Personal Team就可以了,如果使⽤了正式的开发者账号,要选择正确的组织信息。第三⾏是组织名称,第⼆⾏的组织信息实际是电脑签名⽤的证书名称,⽤于保证编译的程序正装原造,除了你没有被⼈篡改过。这⼀⾏则是⽤于软件给⽤户看的信息,就是⼀⾏可以辨识的字符,如果你有公司名可以输⼊进去,没有的话,随便看你⾼兴起⼀个吧。第四⾏是组织的标志名,⽤于确定全球本组织的唯⼀性,习惯上使⽤⽹址的逆向⽅式,没有⽹址的话,看你喜欢吧,起⼀个唯⼀性的标志就好了。最后⼀⾏是重点,既然学习的是C语⾔,就选C。
3. 接下来为这个项⽬选择⼀个保存在磁盘上的位置,项⽬本⾝会⾃动建⽴⼀个⽂件夹,全部⽂件保存在项⽬⾃⼰的⽂件夹之内,这⾥选
择的实际上是项⽬⽂件夹上⼀层⽂件夹的位置。
4. 到了这⼀步,实际上项⽬已经建⽴成功了。这个界⾯就是对项⽬整体进⾏修改、调整的界⾯,⼀般情况下选择默认值就好。
5. 我们可以在Finder中检视⼀下项⽬建⽴的情况,可以看到⽂件夹的层次结构,还有那个⾃动建⽴的程序主⽂件main.c。
6. main.c的内容,实际上已经是⼀个hello World,直接⽤⿏标点击左上⾓的三⾓键,Xcode会⾃动对项⽬进⾏编译、查错、并运⾏。屏
幕中部右下⾓的位置,就是程序运⾏输出的结果。除了我们刚才知道的“Hello,World!”这⼀⾏,还有⼀⾏“Program ended with exit code 0”,直译的意思是程序已经执⾏结束,退出代码是0。0是⼀个特殊的退出代码,表⽰程序正常退出。通常我们可以使⽤退出代码表⽰某种错误,或者给本程序的调⽤者传达某种约定的信息。
⾄此,使⽤命令⾏界⾯,和使⽤Xcode图形化界⾯,我们都知道了如何开始我们的C程序。下⾯的岁⽉⾥,捧着教科书,努⼒吧!Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论