mac os 实用gcc - CSDN
  • 第一步:在Mac OS X系统中安装Xcode 首先需确认已在Mac OS X系统中安装好了正确版本的Xcode。例如,我使用的是Mac OS X 10.8.5,安装的Xcode版本是5.0,尽管高版本可以安装成功,但启动时会报操作系统版本太低,不能...

    第一步:在Mac OS X系统中安装Xcode

    首先需确认已在Mac OS X系统中安装好了正确版本的Xcode。例如,我使用的是Mac OS X 10.8.5,安装的Xcode版本是5.0,尽管高版本可以安装成功,但启动时会报操作系统版本太低,不能运行的错误。需要安装请进入点击打开链接


    第二步:安装gcc/LLVM编译器

    启动Xcode程序,打开Xcode菜单中的“Preferences...”菜单,如下图所示:


    点击“Command Line Tools”旁边的下载图标后等待下载,下载完毕并再进行安装,完成后的效果如下所示:



    第三步:验证安装结果

    执行以下命令:

    $ gcc --version
    $ whereis gcc
    $ whereis make

    如下图所示:


    至此,说明gcc和make均已安装成功!


    展开全文
  • Mac OS Terminal 基本指令(全)

    万次阅读 2012-09-04 17:03:42
    Mac OS X 启用超级用户的方法 Root user,又名超级用户,是一个权力最高的Unix 账户,Root 的账户能在整个系统里任何部份进行任何“操作”,包括:拷贝档案、移动/移除档案、执行程序等。所以,通常 Root 的账户都...
    
    

    Mac OS X 启用超级用户的方法
    Root user,又名超级用户,是一个权力最高的Unix 账户,Root 的账户能在整个系统里任何部份进行任何“操作”,包括:拷贝档案、移动/移除档案、执行程序等。所以,通常 Root 的账户都只会指派给高级专业的用户使用。因此,苹果把Root user 隐藏在Mac
    OS X 里。
    但有时候我们不得不启用Root用户以便于实现某些操作,可以通过以下三种方法把启动Root账户。
    方法一:
    把Mac OS X 的安装光盘放入到光驱中,用光盘启动系统,在安装菜单里选择“Password Reset”选项,便能更改你的密码和启动超级用户模式。(把这工具拷贝到硬盘中是不能启动的,一定要从光盘启动才有效。)
    方法二:
    在Mac OS X里启动Terminal(在“应用程序/实用工具”的文件夹中),输入以下命令:
    sudo passwd Root
    系统会实时要求输入 Root user的新密码,然后再输入一次,以确保密码正确。
    方法三:
    启动NetInfo Manager应用程序(在“应用程序/实用工具”的文件夹中),再依照以 下步骤:
    1. 从菜单中选择“域”→“用户”→“启动Root用户”
    2. 点按窗口底部的“锁状”按钮,然后输入在安装过程中提供的用户名称和密码注册。
    3. 从窗口下半部份的列表中选择 * 号一栏,再输入 Root user 已加密的新密码。可在 Terminal 里输入以下的「htpasswd」命令来产生加密的新密码:
    [localhost:~] currentuser% htpasswd -nb anylogin yourpassword
    [return]
    [localhost:~] currentuser% anylogin : pu9fQgdzVHRB2
    pu9fQgdzVHRB2 就是已加密的新密码
    4. 点按窗口底部的“锁状”按钮,然后储存更改和离开 NetInfo Manager。
    现在可以在 Terminal 里试试 Root user 的新密码如何通过终端命令删除Finder中无法删除的文件这里我先介绍一个经常性的问题。有人常常因为某种原因。比如死机、文件下载一半意外退,这时经 常有文件无法删除,系统提示你权限不够。这个时候我们就可以利用一行简单的命令进行删除。
    当然有人会提出启动到os 9来删除,这样有两大问题。一是你需要重启两次机。先切到9。再切回x。还有就是对新机器来说,你根本就没办法从os 9启动。

     


    言归正传,下面就举便说明:

      
    1 打开终端应用程序

    2 输入命令:sudo rm -r -f “你要删除的文件”
    还要注意终端命令是区分大小写的,全部小写。

    3 把你要删的文件或者文件夹用mouse拖进终端窗口,好多个也可以一起拖。

    4 然后在终端中回车

    5 输入当前管理员用户密码。如果没有密码就直接回车。注意不是root账号的密码。

    6 终端中没有任何提示信息表明成功删除。

    注意:如果用这个命令还无法删除,有两种可能性:一是你删除的是系统正在使用的临时文件之类的。二是有可能你的硬盘目录出现问题。这时请先用磁盘工具检查一下你的硬盘。

    解释:
    sudo 临时执行root账户操作,当你使用这个命令的时候等同于使用 root 用户进行操作,所以要当心。它后面一般是你要操作的其它命令。比如本例中的 rm。同时sudo 命令都要求你输入当前管理员用户密码。如果密码为空就直接回车。

    rm 删除命令。即remove的缩写,它后面有两个参数。
    -r 删除文件夹内的子文件夹及内容,一般情况下rm只能删 除文件或者空的文件夹。
    -f 强制删除参数
    如果需要了解rm命令的更多参数。请输入:man rm

    其它常用命令
    cd
    进入某个目录

    cp 原始文件 目标文件
    复制文件,可带路径复制不到位置


    kill -9 [PID]
    結束指定的 PID 執行程式

    ls
    列出当前目录下所有文件

    man [命令]
    查询某个命令的使用方法

    mkdir [目录]
    新建目录

    rmdir 目录
    删除目录,注意只能是空目录

    mv 原始文件 目录文件
    移动或者重命名文件

    passwd
    更改密码


    rm
    删除文件
    -f 强制删除
    -i 删除前确认
    -r 删除目录及子目录内容


    sudo rm -rf ~/.Trash/*
    强制删除当前用户垃圾箱内所有项目

    top
    显示所有进程。

    kill -9 [PID]
    结束PID进程

    open -a itunes
    打开aqua 程序itunes
    删除不了的文件可以在终端里用 rm -rf 来删。
    打开 应用程序--实用程序--终端
    输入   sudo rm -rf .然后把要删除的文件拖进来。回车--输入系统用户密码--回车就行了。
    下面是一些unix常用的命令,MAC系统的终端基本都可以用

    a. 关於档案/目录处理的指令: 

    1. ls
    这是最基本的档案指令。 ls 的意义为 "list",也就是将某一个目录或是某一个档案的内容显示出来。

    如果你在下 ls 指令後头没有跟著任何的档名,它将会显示出目前目录中所有档案。

    也可以在 ls 後面加上所要察看的目录名称或档案的名称,如

    % ls /home2/X11R5

    % ls first

    ls 有一些特别的参数,可以给予使用者更多有关的资讯,如下:

    -a : 在 UNIX 中若一个目录或档案名字的第一个字元为 "." , 则使用 ls将不会显示出这个档案的名字,我们称此类档案为隐藏档。如 tcsh的初设档 .tcshrc;如果我们要察看这类档案,则必须加上参数 -a 。

    -l : 这个参数代表使用 ls 的长( long )格式,可以显示更多的资讯,如档案存取权,档案拥有者( owner ),档案大小,档案最後更新
    曰期,甚而 symbolic link 的档案是 link 那一个档等等。如下

    % ls -l

    drwx--x--x 2 jjtseng 512 Aug 8 05:08 18
    drwx--x--x 2 jjtseng 512 Aug 8 22:00 19
    -rw------- 1 jjtseng 566 Aug 8 05:28 makefile

    2. cp
    cp 这个指令的意义是复制("COPY") , 也就是将一个或多个档案复制成另一个档案或者是将其复制到另一个目录去。

    cp 的用法如下:

    cp f1 f2 : 将档名为 f1 的档案复制一份为档名为 f2 的档案。
    cp f1 f2 f3 ... dir : 将档案 f1 f2 f3 ... 都以相同的档名复制一份放到目录 dir 里面。
    cp -r dir1 dir2 : 将 dir1 的全部内容全部复制到 dir2 里面。

    cp 也有一些参数,如下:

    -i : 此参数是当已有档名为 f2 的档案时,若迳自使用 cp 将会将原来 f2的内容掩盖过去,因此在要盖过之前必须先询问使用者一下。如使用者的回答是y(yes)才执行复制的动作。

    -r : 此参数是用来做递回复制用,可将一整颗子树都复制到另一个目录中。

    3. mv
    mv 的意义为 move , 主要是将一档案改名或换至另一个目录。如同 cp ,它也有三种格式:

    mv f1 f2 : 将档名为 f1 的档案变更成档名为 f2 的档案。
    mv dir1 dir2 : 将档名为 dir1 的目录变更成档名为 dir2 的目录。
    mv f1 f2 f3 ... dir : 将档案 f1 f2 f3 ... 都移至目录 dir 里面。

    mv 的参数有两个,-f 和 -i , 其中 -i 的意义与 cp 中的相同,均是 interactive询问之意。而 -f 为强迫( force ) , 就是不管有没有同名的档案,反正我就是要搬过去,所有其他的参数遇到 -f 均会失效。

    4. rm
    rm 的意义是 remove ,也就是用来杀掉一个档案的指令。在 UNIX 中一个被杀掉的档案除非是系统恰好有做备份,否则是无法像 DOS 里面一样还能够救回来的。所以在做 rm 动作的时候使用者应该要特别小心。

    rm 的格式如下:

    rm f1 f2 f3 .....

    而 rm 的参数比较常用的有几个: -f , -i , 与 -r

    -f : 将会使得系统在删除时,不提出任何警告讯息。
    -i : 在除去档案之前均会询问是否真要除去。
    -r : 递回式的删除。

    小心不要随便使用 rm -rf , 否则有一天你会"欲哭无泪"......

    5. mkdir
    mkdir 是一个让使用者建立一个目录的指令。你可以在一个目录底下使用midir 建立一个子目录,使用的方法如下:

    mkdir dirname1 [ dirname2 ... ]

    如此你就可以建立一个或多个目录。

    6. chdir ( cd )
    这是让使用者用来转移工作目录用的。
    chdir 的用法如下:

    chdir dirname

    如此你就可以将目前的目录转移到 dirname 这一个目录去。或使用 "chdir .." 来转移到上一层目录。

    7. rmdir
    相对於 mkdir ,rmdir 是用来将一个"空的"目录杀掉的。如果一个目录下面没有任何档案,你就可以用 rmdir 指令将其除去。rmdir 的使用法如下:

    rmdir dirname1 [ dirname2 .... ]

    如果一个目录底下有其他的档案, rmdir 将无法将这个目录杀掉,除非使用rm 指令的 -r 选项。

    8. pwd
    pwd 会将目前目录的路径( path )显示出来,例如:

    9. cat/more/less
    以上三个指令均为察看档案内容的指令。cat 的意义是猫....不不不,是concatenate ,在字典上的意思是"连结,将…串成锁状"( 语出资工电子词典 cdict ),其实就是把档案的内容显示出来的意思。 cat 有许多奇怪的参数,较常为人所使用的是 -n 参数,也就是把显示出来的内容加上行号。 cat 的用法如下:

    cat [-n] :自标准输入读进内容,你可以用 pipe 将别的程式的输出转向给 cat .
    cat [-n] filename : 将 filename 的内容读进来,显示在标准输出上。

    问题在於 cat 它是不会停下来的,因此并不好用( 试想如果一个萤幕二十四行,而一个档案四百行,cat 一出来将会劈哩啪啦不断的卷上去,使用者很难据此得到他们所需的资讯。) 所以才有人又写了 more 出来。

    more , 跟据蔡文能老师的说法是"再多一点就好",more 可以将所观察的档案跟据终端机的形态一页页的显示出来,再根据使用者的要求换页或卷行。如果使用者要在某一个档案中搜寻一个特定的字串,则按 / 然後跟著打所要搜寻的单字即可进行搜寻。more 也可以找得到。more 的使用法如下:

    more filename

    如果你在使用中觉得已经看到了所要看的部份,可以按'q'离开 more 的使用。在使用中按'v' 亦可以使用编辑器来编辑所观看的档案。

    less 的用法与 more 极类似,原先它就是为了弥补 more 只能往前方卷页的缺点而设计。 less 的用法如下:

    less filename

    其与 more 不同的是它可以按 y 来往上卷一行,并且可以用"?"来往回搜寻你所要找的单字。

    10. chmod
    chmod 为变更档案模式用( change mode ) . 这个指令是用来更改档案的存取模式( access mode )。在 UNIX 一个档案上有可读(r)可写(w)可执行(x)三种模式,分别针对该档案的拥有者( onwer )、同群者( group member )( 你可以 ls -lg来观看某一档案的所属的 group ),以及其他人( other )。一个档案如果改成可执行模式则系统就将其视为一个可执行档,而一个目录的可执行模式代表使用者有进入该目录之权利。chmod 就是用来变更一些档案的模式,其使用方式如下:

    chmod [ -fR ] mode filename ...

    其参数的意义如下:

    -f Force. chmod 不会理会失败的动作。
    -R Recurive. 会将所有子树下的所有子目录及档案改为你所要改成的模式。

    mode 可以为一个三位或四位的八进位数字,来表示对某些对象的存取权。详情可参阅 chmod(1) 的 manual page 中有关 Absolute Modes 的说明。

    或是用一个字串来表示,请参考 chmod(1) 的说明。



    b. 关於 Process 处理的指令:
     

    1. ps
    ps 是用来显示目前你的 process 或系统 processes 的状况。以下列出比较常用的参数:

    其选项说明如下:
    -a 列出包括其他 users 的 process 状况。
    -u 显示 user - oriented 的 process 状况 。
    -x 显示包括没有 terminal 控制的 process 状况 。
    -w 使用较宽的显示模式来显示 process 状况 。

    我们可以经由 ps 取得目前 processes 的状况,如 pid , running state 等。

    2. kill
    kill 指令的用途是送一个 signal 给某一个 process 。因为大部份送的都是用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill。kill 的用法为:

    kill [ -SIGNAL ] pid ...
    kill -l

    SIGNAL 为一个 singal 的数字,从 0 到 31 ,其中 9 是 SIGKILL ,也就是一般用来杀掉一些无法正常 terminate 的讯号。其馀讯号的用途可参考 sigvec(2)中对 signal 的说明。

    你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形请参阅 man kill。

    c. 关於字串处理的指令: 

    1. echo
    echo 是用来显示一字串在终端机上。□ echo -n 则是当显示完之後不会有跳行的动作。


    2. grep/fgrep
    grep 为一过滤器,它可自一个或多个档案中过滤出具有某个字串的行,或是自标准输入过滤出具有某个字串的行。

    fgrep 可将欲过滤的一群字串放在某一个档案中,然後使用 fgrep 将包含有属於这一群字串的行过滤出来。

    grep 与 fgrep 的用法如下:

    grep [-nv] match_pattern file1 file2 ....
    fgrep [-nv] -f pattern_file file1 file2 ....

    -n 把所找到的行在行前加上行号列出
    -v 把不包含 match_pattern 的行列出match_pattern 所要搜寻的字串
    -f 以 pattern_file 存放所要搜寻的字串

    d. 网路上查询状况的指令: 

    1. man
    man 是手册 ( manual ) 的意思。 UNIX 提供线上辅助( on-line help )的功能,
    man 就是用来让使用者在使用时查询指令、系统呼叫、标准程式库函式、各种表格等的使用所用的。man 的用法如下:

    man [-M path] [[section] title ] .....
    man [-M path] -k keyword ...

    -M path man 所需要的 manual database 的路径。我们也可以用设定环境变数 MANPATH 的方式来取代 -M 选项。title 这是所要查询的目的物。section 为一个数字表示 manual 的分类,通常 1 代表可执行指令,2 代表系统呼叫( system call ) ,3 代表标准函数,等等。

    像下面 man 查询的片段:

    SEE ALSO
    apropos(1), cat(1V), col(1V), eqn(1), lpr(1), more(1),
    nroff(1), refer(1), tbl(1), troff(1), vgrind(1), vtroff(1),
    whatis(1), eqnchar(7), man(7), catman(8)

    我们如要参考 eqnchar(7) 的资料,则我们就输入 man 7 eqnchar ,便能取得我们所要的辅助讯息。
    -k keyword用来将含有这项 keyword 的 title 列出来。

    man 在 UNIX 上是一项非常重要的指令,我们在本讲义中所述之用法均仅只是一个大家比较常用的用法以及简单的说明,真正详细的用法与说明还是要请你使用man 来得到。

    2. who
    who 指令是用来查询目前有那些人在线上。

    3. w

    w 指令是用来查询目前有那些人在线上,同时显示出那些人目前的工作。

    4. ku
    ku 可以用来搜寻整个网路上的 user ,不像 w 跟 who 只是针对 local host 的查询. 而且 ku 提供让使用者建立搜寻特定使用者名单的功能。你可以建立一个档案 information-file 以条列的方式存放你的朋友的资料,再建立一个档案hosts-file 来指定搜寻的机器名称。 ku 的指令格式可由 ku -h 得到。

    E. 网路指令: 

    UNIX 提供网路的连接,使得你可以在各个不同的机器上做一些特殊的事情,如你可以在系上的 iris 图形工作站上做图形的处理,在系上的 Sun 上读 News ,甚至到学校的计中去找别系的同学 talk 。这些工作可以利用 UNIX 的网路指令,在你的位子上连到各个不同的机器上工作。如此一来,即使你在寝室,也能轻易的连至系上或计中来工作,不用像以前的人必须泡在冷冰冰的机房面。

    这些网路的指令如下所述:

    1. rlogin 与 rsh
    rlogin 的意义是 remote login , 也就是经由网路到另外一部机器 login 。
    rlogin 的格式是:

    rlogin host [ -l username ]

    选项 -l username 是当你在远方的机器上的 username 和 local host 不同的时後,必须输入的选项,否则 rlogin 将会假设你在那边的 username 与 localhost 相同,然後在第一次 login 时必然会发生错误。

    rsh 是在远方的机器上执行某些指令,而把结果传回 local host 。rsh 的格式如下:

    rsh host [ -l username ] [ command ]

    如同 rlogin 的参数 -l username , rsh 的 -l username 也是指定 remote host的 username 。而 command 则是要在 remote host 上执行的指令。如果没有指定 command ,则 rsh 会去执行 rlogin ,如同直接执行 rlogin 。

    不过 rsh 在执行的时候并不会像一般的 login 程序一样还会问你 password , 而是如果你没有设定 trust table , 则 remote host 将不会接受你的 request 。

    rsh 须要在每个可能会做为 remote host 的机器上设定一个档案,称为 .rhosts。这个档案每一行分为两个部份,第一个是允许 login 的 hostname , 第二个部份则是允许 login 的 username 。例如,在 ccsun7.csie.nctu.edu.tw 上头你的username 为 ysjuang , 而你的 home 下面的 .rhost 有以下的一行:

    ccsun6.cc.nctu.edu.tw u8217529

    则在 ccsun6.cc.nctu.edu.tw 机器上的 user u8217529 就可以用以下的方法来执行 rsh 程式:

    % rsh ccsun7.csie.nctu.edu.tw -l ysjuang cat mbox

    将 ysjuang 在 ccsun7.csie.nctu.edu.tw 上的 mbox 档案内容显示在 local host ccsun6.cc.nctu.edu.tw 上。

    而如果 .rhost 有这样的一行,则 ccsun6.cc.nctu.edu.tw 上的 user u8217529将可以不用输入 password 而直接经由 rsh 或 rlogin login 到ccsun7.csie.nctu.edu.tw 来。

    注意:

    .rhost 是一个设定可以信任的人 login 的表格,因此如果设定不当将会让不法之徒有可以乘机侵入系统的机会。 如果你阅读 man 5 rhosts ,将会发现你可以在第一栏用 + 来取代任何 hostname ,第二栏用 + 来取代任何username 。

    如一般 user 喜欢偷懒利用 " + username " 来代替列一长串 hostname ,但是这样将会使得即使有一台 PC 上跑 UNIX 的 user 有与你相同的username , 也可以得到你的 trust 而侵入你的系统。这样容易造成系统安全上的危险。因此本系禁止使用这样子的方式写你的 .rhost 档,如果发现将予以停机直到你找中心的工作人员将其改正为止。 同理,如果你的第二个栏位为 + ,如" hostname + " ,则你是允许在某一部机器上的"所有"user 可以不用经由输入 password 来进入你的帐号,是壹种更危险的行为。所以请自行小心。

    2. telnet
    telnet 是一个提供 user 经由网路连到 remote host。
    telnet 的 格式如下:

    telnet [ hostname | ip-address ] [ port ]

    hostname 为一个像 ccsun1 或是 ccsun1.cc.nctu.edu.tw 的 name address,ip-address 则为一个由四个小於 255 的数字组成的 ip address ,如 ccsun1的 ip-address 为 140.113.17.173 ,ccsun1.cc.nctu.edu.tw 的 ip-address为 140.113.4.11 。你可以利用 telnet ccsun1 或 telnet 140.113.17.173 来连到 ccsun1。

    port 为一些特殊的程式所提供给外界的沟通点,如资工系的 MUD 其 server 便提供一些 port 让 user 由这些 port 进入 MUD 程式。详情请参阅 telnet(1)的说明。


    3. ftp
    ftp 的意义是 File Transfer Program ,是一个很常应用在网路档案传输的程式。ftp 的格式如下:

    ftp [ hostname | ip-address ]

    其中 hostname | ip-address 的意义跟 telnet 中的相同。

    在进入 ftp 之後,如果与 remote host 连接上了,它将会询问你 username与密码,如果输入对了就可以开始进行档案传输。

    在 ftp 中有许多的命令,详细的使用方式请参考 ftp(1) ,这里仅列出较常用的 cd , lcd , mkdir , put , mput , get , mget , binary , ascii ,
    prompt , help 与 quit 的使用方式。

    ascii 将传输模式设为 ascii 模式。通常用於传送文字档。

    binary 将传输模式设为 binary 模式,通常用於传送执行档,压缩档与影像档等。
    cd remote-directory 将 remote host 上的工作目录改变。

    lcd [ directory ] 更改 local host 的工作目录。

    ls [ remote-directory ] [ local-file ] 列出 remote host 上的档案。

    get remote-file [ local-file ] 取得远方的档案。

    mget remote-files 可使用通用字元一次取得多个档案。

    put local-file [ remote-file] 将 local host 的档案送到 remote host。

    mput local-files 可使用通用字元一次将多个档案放到 remote host 上。

    help [ command ] 线上辅助指令。

    mkdir directory-name 在 remote host 造一个目录。

    prompt 更改交谈模式,若为 on 则在 mput 与 mget 时每作一个档案之传输时均会询问。

    quit/bye 离开ftp .

    利用 ftp ,我们便可以在不同的机器上将所需要的资料做转移,某些特别的机器更存放大量的资料以供各地的使用者抓取,本校较著名的 ftp server有 NCTUCCCA 与系上的 ftp.csie.nctu.edu.tw 。这些 ftp server 均有提供一个 user 称为 anonymous ,一般的"外来客"可以利用这个 username 取得该 server 的公共资料。不过 anonymous 在询问 password 时是要求使用anonymous 的使用者输入其 email address,以往有许多台湾的使用者在使用国外的 ftp server 时并没有按照人家的要求输入其 email address,而仅是随便打一些字串,引起许多 internet user 和管理者的不满,对台湾的使用者的风评变得很差,因此遵循各 ftp server 的使用规则也是一件相当重要的事。


    f. 关於通讯用的指令: 

    1. write
    这个指令是提供使用者传送讯息给另一个使用者,使用方式:
    write username [tty]

    2. talk/ytalk/cytalk/ctalk
    UNIX 专用的交谈程式。会将萤幕分隔开为你的区域和交谈对象的区域,同时也可和不同机器的使用者交谈。使用方式:

    talk username[@host] [tty]

    3. mesg
    选择是否接受他人的 messege , 若为 messege no 则他人的 messege 将无法传送给你,同时他也无法干扰你的工作。使用方法:

    mesg [-n|-y]

    4. mail/elm
    在网路上的 email 程式,可经由此程式将信件 mail 给他人。 使用方式:

    mail [username]
    mail -f mailboxfile

    如有信件,则直接键入 mail 可以读取你的 mail .

    elm 提供较 mail 更为方便的介面,而且可做线上的 alias . 你可以进入 elm使用上下左右键来选读取的信件,并可按 h 取得线上的 help 文件。

    使用方式:

    elm [usernmae]
    elm -f mailboxfile

    g. 编译器( Compiler ):

    Compiler 的用处在於将你所撰写的程式翻译成一个可执行档案。在资工系常用的程式语言是 C , pascal , FORTRAN 等。你可以先写好一个 C 或 Pascal或 FORTRAN 的原始程式档,再用这些 compiler 将其翻成可执行档。你可以用这个方法来制造你自己的特殊指令。

    1. cc/gcc (C Compiler)
    /usr/bin/cc
    /usr/local/bin/gcc

    语法: cc [ -o execfile ] source
    gcc [ -o execfile ] source

    execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可执行档会以 a.out 做为档名。 source 为一个以 .c 做为结尾的 C 程式档。请参阅 cc(1) 的说明。

    2. pc (Pascal Compiler)
    /usr/local/bin/pc

    语法: pc [ -o execfile ] source

    execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可执行档会以 a.out 做为档名。 source 为一个以 .p 做为结尾的 Pascal 程式档。 请参阅 /net/home5/lang/man 中 pc(1) 的说明。

    3. f77 (Fortran Compiler)
    /net/home5/lang/f77

    语法: f77 [ -o execfile ] source

    execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可执行档会以 a.out 做为档名。 source 为一个以 .p 做为结尾的 FORTRAN 程式档。

    h. 有关列印的指令: 
    以下为印表所会用到的指令,在本系的印表机有 lp1 , lp2 ( 点矩阵印表机 ),lw , sp , ps , compaq ( 雷射印表机 ),供使用者使用。

    1. lpr
    lpr 为用来将一个档案印至列表机的指令。

    用法:
    lpr -P[ printer ] file1 file2 file3 ....


    lpr -P[ printer ] < file1

    例子:
    lpr -Plp1 hello.c hello.lst hello.map
    lpr -Plp1 < hello.c

    前者以参数输入所要印出的档案内容,後者列印标准输入档案( standard input )的内容,因已将 hello.c 转向到标准输入,故会印出 hello.c 的档案内容。

    2. lpq
    lpq 是用来观察 printer queue 上的 Jobs 。

    用法:
    lpq -P[ printer ]


    3. lprm
    lprm 是用来取消列印要求的指令。 通常我们有时会印错,或是误送非文字档资料至 printer , 此时就必须利用 lprm 取消列印 request ,以免造成资源的浪费。

    用法:
    lprm -P[ printer ] [ Jobs id | username ]

    lprm 用来清除 printer queue 中的 Jobs , 如果你使用 Job Id 作为参数,则它将此 Job 自printer queue 清除,如果你用 username作为参数,则它将此 queue中所有 Owner 为此 username 的 Jobs 清除。

    i. 更改个人使用资料:

    1. passwd
    passwd 是用来更改你的使用密码,用法为:

    passwd [ username ]

    在使用 passwd 的时候,它会先问你的旧密码,然後询问两次要更改的密码,确定无误後才将你的密码改掉。

    2. chsh
    chsh 是提供使用者更换 login shell 的指令,你可经由此更换自己使用的 shell 。

    如痴如醉、、、
    展开全文
  • 用了十天时间看完《Linux内核设计与实现》,想在Mac... 安装VMware和Ubuntu(1) 我的配置: Mac OS X 10.10.5,VMware Fusion 8,Ubuntu 16.04.2安装时我给虚拟机划分了50G磁盘空间,其中30G给/,1G给swap,2G给/boot,

    用了十天时间看完《Linux内核设计与实现》,想在Mac上编译Linux内核实践下。编译过程遇到了不少问题,根本原因还是对内核的编译流程理解不够。


    流程整理

    1. 安装VMware和Ubuntu

    (1) 我的配置: Mac OS X 10.10.5,VMware Fusion 8,Ubuntu 16.04.2

    安装时我给虚拟机划分了50G磁盘空间,其中30G给/,1G给swap,2G给/boot,剩下给/home。分的不太好,从编译安装完成后磁盘的使用情况就能看出来:

    这里写图片描述

    /boot是引导分区,放操作系统内核和Bootloader的(也就是下面会遇到的grub),1G足矣;/分区第一次分了10G不够用,用了这么多空间,是因为我把内核源码和各种modules都放在/usr/src下的缘故吗?

    (2) 查看分区

    可以通过命令行查看分区、分区、格式化磁盘等。

    这里写图片描述

    可以看到物理分区已经OK,之后就是等着Ubuntu启动,然后挂载到相应的Linux文件系统(或者叫Linux目录结构)上了。

    2. Linux内核源码的下载、配置、编译、安装

    《Linux内核设计与实现》第二章详细介绍了make过程:

    • 编译模块的配置:是否开启内核抢占、是否启用SMP、有些功能块是否生成module形式
    • 简化的内核配置工具:图形化的、字符型的、默认方式的
    • 输出重定向以减少编译垃圾信息
    • 多核处理器上衍生多个编译作业提高效率

    书上讲得很细致,但是实践起来,How to Compile Your Own Linux Kernel 是我目前看过得介绍得最好最实用的文章。

    //(1)下载源码并解压、下载可能用到的库
    apt-get update
    apt-get install linux-source
    apt-get install build-essential gcc libncurses5-dev libssl-dev
    
    cd /usr/src
    tar xjvf linux-source-4.4.0.tar.bz2
    
    //(2)编译配置(图形化配置工具)
    make nconfig
    
    //(3)编译
    make 
    
    //(4)安装
    make modules_install 
    make install
    
    //(5)启动引导grub配置(有了这个,在启动引导程序grub中就可以切换到任意已经安装的内核版本了)
    nano /etc/default/grub  //注释了两处代码,使启动时首先进行内核选择
    grub-mkconfig -o /boot/grub/grub.cfg //根据上一行的修改自动生成配置文件
    
    reboot

    遇到过的问题

    1. **Ubuntu没有分区(?)**Linux无法启动,卡在initramfs,提示“Alert! UUID/xxxxxxxxxxxx does not exist. Dropping to a shell”
    2. Ubuntu分区太小,20G虚拟磁盘分出了10G给/,Linux编译中止,提示磁盘剩余空间不足
    3. 虚拟机内存太小,启动Linux中止,提示”Kernel Panic - not syncing : out of memory and no killable processes”

    Linux内核编译和启动过程中遇到的知识

    1. 磁盘分区、文件系统
    参考资料[2]写得太全面了,磁盘的基础知识读一读有个印象就好,重点还是理解“挂载-文件系统-目录“的概念。

    2. 启动流程
    参考了很多资料,画了启动的前三个阶段:BIOS、Grub、根文件系统挂载,这几个阶段也都是在BIOS的带领下完成的,之后就会将控制权切给内核,开始第一个Linux进程了。如果没有理解错的话,根文件系统在第三步经过了从内存中的虚拟根文件系统(VFS)到磁盘中的真实根文件系统切换这一流程的。Linux–根文件系统的挂载过程分析 里解释了“为什么不直接把真实的文件系统配置为根文件系统“,看起来就是时机未满,磁盘驱动未加载的原因。Linux如何挂载根文件系统 里对挂载过程中的虚拟根文件系统initrd执行过程描述得更详细。

    这里写图片描述

    3. grub
    /boot下面放了已经存在的各种版本的内核映像,每个版本含有一个initrd.img和一个vmlinuz,另外还有一个grub文件夹,一般是不要直接编辑/boot/grub/grub.cfg的。


    参考资料

    [1]. 手把手交大家在mac上用VMWare虚拟机装Linux-Ubuntu–及Ubuntu安装Vmware Tools
    这篇文章详细介绍了安装Ubuntu流程,也解决了VMware屏幕未全屏的问题,但VMware Fusion创建虚拟机默认20G磁盘空间,编译Linux内核不够用,所以要在VMware Fusion -> Virtual Machine -> Settings -> Hard Disk中修改下Disk size的大小

    [2]. 磁盘、分区及Linux文件系统
    创建虚拟机跑Ubuntu时,是建议手动分区的。看了这篇图文并茂的文章,理解了磁盘分区的意义、Linux文件系统如何对一个文件分成多个数据块存储并索引、物理分区又是如何与逻辑树结构挂载的。

    [3]. 《鸟哥的Linux私房菜》第七章:Linux磁碟与档案系统管理
    《Linux内核设计与实现》第十三章虚拟文件系统(VFS)介绍的很详细,现阶段有些难理解,不如鸟哥这章介绍的简单、实用。

    [4]. 《深入理解Linux内核》附录一:系统启动
    了解系统启动的流程对于理解编译Linux内核过程遇到的命令、文件、配置项很关键。经典的书,介绍的也很学院派,细致到连BIOS在ROM中的物理地址、内核映像中的的函数setup()偏移量、引导程序(grub)字节数大小都会给出来。

    [5]. linux添加系统调用总结(内核版本4.4.4)
    为了巩固一遍内核编译,参考这篇文章(和我编译的内核版本最接近)添加自定义系统调用,成功!

    展开全文
  • 于是mac新版系统catalina一出我便更新了(尤其是看到了新颖的功能 sidecar),之后就遇到了一些问题: 1.32bits程序没法用了 首先在官网里有说,新的系统将不再支持 32bits的程序(以往系统当你打开32bits的程序...

    作为一个程序员,肯定是想不断的尝试新的东西。

    于是mac新版系统catalina一出我便更新了(尤其是看到了新颖的功能 sidecar),之后就遇到了一些问题:

     

    1.32bits程序没法用了

    首先在官网里有说,新的系统将不再支持 32bits的程序(以往系统当你打开32bits的程序,它只会警告你性能会受影响,而不会直接无法打开,而是可以正常使用)。

    这样也就造成了更新后许多程序无法使用。

    所以一些没有64bits版本的程序你就无法使用了 ,没有什么太好的解决办法。

     

    2.vmware 虚拟机 黑屏

    我的vmware fusion里面的虚拟机开机后黑屏了,原因就是老的版本没有办法获取截屏权限,所以就黑屏了。

    解决办法有两种:

    1.安装新版的vmware fushion

    其实如果是破解版的用户不太用担心更新问题,我下了新版的安装了上去,还是可以照常使用,并且原本的破解密钥还能使用

    但是 ,这里面还是有坑的 ,请看下文。

     

    2. 网友提供的命令行方法:https://www.cnblogs.com/pyyu/p/11663295.html

    这个方法我没有尝试,我总感觉还是更新软件来的更好一些,并且使用新版的vmware可能会更舒服。

     

    我选择了方法1,结果又遇到了新问题,当我用新版本的vmware打开我原本的虚拟机文件,出现了内核报错

    类似于这样的:

    Version mismatch with vmmon module: expecting 279.0, got 271.0.

    我网上找了解决办法,但始终没整好,所以也就重装虚拟机了,里面也没啥重要文件。

     

    3.成砖

    听说有人升级新系统,电脑成砖了,这个我没遇到,还算幸运。

     

    4.gcc编译报错

    configure: error: C compiler cannot create executables

    这个在我一篇文章中有提到解决办法 https://blog.csdn.net/Lin_QC/article/details/102525203

     

    5. 莫名的发热

    这个应该最普遍的现象了,经常在电脑睡眠后唤醒就会cpu飙升。

    貌似是指纹解锁的锅,经常会唤醒 disnoted 和一个 testinput什么都进程,在活动监视器里把他们kill掉就不会发热了,不过这也不是一个长久的办法,希望macos的开发者们还是能给点力给修复一下。

     

    以上是我的总结,欢迎各位补充

     

    展开全文
  • Mac OS X 启用超级用户的方法 Root user,又名超级用户,是一个权力最高的Unix 账户,Root 的账户能在整个系统里任何部份进行任何“操作”,包括:拷贝档案、移动/移除档案、执行程序等。所以,通常 Root 的账户...
  • Mac OS X安装软件和使用入门

    千次阅读 2016-11-25 09:25:00
    打开终端Terminal---搜索或者应用程序-实用工具--Terminal 快捷键 command+H:隐藏窗口; command Q:退出应用程序; commandZ:恢复上一步; commandshift Z:恢复下一步; 强制退出无响应程序--...
  • mac os x 调试魔法

    千次阅读 2015-06-17 11:05:46
    Mac OS X包含很多由苹果的工程小组加入的调试工具,用于帮助开发和调试特定的子系统。其中有很多工具仍保留在发布的系统中,可以用来调试您的代码。本文将介绍其中的一些使用较为广泛的工具。 如果调试工具的说明...
  • Mac OS X中安装命令行工具Command Line Tools(无Xcode) 简介 喜欢通过终端访问更传统的Unix工具包的Mac用户(大部分是程序员),都会选择安装Xcode IDE的可选命令行工具子部分,也就是Command Line Tools。 从...
  • mac 系统 10.13.3 Python 3.6.5 |Anaconda custom (64-bit)| [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin 笔者首先 直接 pip install xgboost,安装失败。 再试了conda install ...
  • openwrt 在MAC OS X上编译失败

    千次阅读 2014-11-19 19:53:20
    我的目标是:借助QEMU MIPS虚拟机,成功运行起
  • [OSX使用技巧] 【教学】Mac OS X下终端的基本命令 [复制链接]       Mac OS X 启用超级用户的方法  Root user,又名超级用户,是一...
  • mac系统下配置Eclipse Java/C++ 开发环境

    千次阅读 2014-04-19 09:14:47
    1. Mac OS X 本身已经安装好 jdk,所以搭建 Java Eclipse环境很简单,只需要下载适合系统的 Eclipse即可,首先查看系统是几位的(点击 Mac 屏幕左上角的苹果 Logo,选择“关于本机”,在弹出的方形窗口里点击“更多...
  • Mac OS X 术语表

    2019-06-20 04:06:11
    来源:苹果在线 abstract type 抽象类型 在信息属性列表中定义一类文档的通用特性。每一种抽象类型都有一个相应的具体类型。也请参见“具体类型”。 active window 活动窗口 ...address space 地址...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • mac os x 将C文件编译成.so库

    千次阅读 2016-12-29 16:24:35
    应用背景 将C语言写好的代码提供给unity调用,项目要在Android手机上运行,所以要将C代码编译成.so库。 步骤: 1、下载安装Android studio(其实也可以不下载,楼主为了省事,直接安装Android studio,目的还是为了...
  • 我的系统是Mac OS X 10.5.8(ppc); 安装有python2.5和python2.6两个版本(2.4是系统自带的); 我要分别给这两个版本装上PtQt4,由于我已经安装了2.5所以就以2.6为例,过程是一样的就是有一叮点的不同。 安装...
1 2 3 4 5 ... 20
收藏数 2,940
精华内容 1,176
热门标签
关键字:

mac os 实用gcc