红联Linux门户
Linux帮助

自学C语言需要什么基础?

发布时间:2009-05-24 14:38:51来源:红联作者:紫色葡萄
我知道好多人linux都是自学的,自学成才是兴趣所致,比学校教育更好,
但缺陷也多,苦苦摸索得不到指导,一个容易的问题学校一句话搞定,可自学要走很多弯路,去尝试,失败,再尝试~
试用Ubuntu桌面,终于把该死的一些windows习惯改掉了,现在对于gnome桌面也算熟悉,操作的基本命令也会一些。
掌握的基本命令如下:
apt-get install/remove 软件名;apt-get update/upgrade;sudo gedit 路径/文件名;dpkg --configure -a;tar zxvf 文件名.tar.gz,./configure,make,make install;top,kill PID号码;ls;cd;cp;mkdir;rm -r

我几乎没有编程基础,计算机基础也一般,专业和计算机十万八千里,请问我该如何下手?
我懂一点html语言,对C语言有帮助吗?
文章评论

共有 23 条评论

  1. mostonect 于 2009-05-29 17:09:55发表:

    谭浩强的还是算了吧,
    推荐一本 C Primer Plus有中文版

  2. l460618498 于 2009-05-29 15:30:24发表:

    俺也在学,就来看看高手们的意见

  3. l460618498 于 2009-05-29 15:30:16发表:

    俺也在学,就来看看高手们的意见

  4. sauntor 于 2009-05-29 15:08:07发表:

    俺正专攻html,java,也懂一点basic,看楼上讨论这么热烈俺也想试试 C/C++ 了 :0)1

  5. cfl09 于 2009-05-29 13:34:31发表:

    C要什么基础啊? 看看谭浩强的书,多看几遍,上机调试下小程序。

  6. 心有余闲 于 2009-05-28 04:23:22发表:

    我学的是java.

  7. wwl910 于 2009-05-26 05:49:32发表:

    精心学习就可以啦
    找一个书看,找个案例看,源代码最主要看懂!

  8. paul_Zhao 于 2009-05-25 20:50:59发表:

    不需要基础的,直接学就可以了

  9. ffsedan 于 2009-05-25 13:45:21发表:

    同意LS

  10. njliuqi 于 2009-05-25 13:39:05发表:

    C就是基础语言啊,
    再基础的就是汇编了

  11. lijiang 于 2009-05-25 12:09:19发表:

    最好有Basic语言基础

  12. lee_ruin 于 2009-05-25 10:31:06发表:

    写程序用VI就可以了,方便,gcc用来编译C程序,g++用来编C++,
    好像是这样的,哈

  13. cdaxcy 于 2009-05-25 10:18:24发表:

    力荐谭浩强的书

  14. jrs0335 于 2009-05-25 08:40:14发表:

    支持一下,和LZ遇到了同样的问题。嘻嘻。

  15. yougukepp 于 2009-05-25 00:49:50发表:

    谭浩强的书不错,如果想在win环境下编程选用C-free也不错,很小。

  16. LinuxSpace 于 2009-05-25 00:14:23发表:

    把一个c文件编译成目标文件
    gcc -Wall -c csource.c

    编译多个c源文件,生成可执行文件
    gcc -Wall s1.c s2.c ...sn.c -o exeutable

    链接多个目标文件,生成可执行文件
    gcc -Wall obj1.o obj2.o ... objn.o -o exeutable

    带库编译,生成可执行文件
    gcc -Wall main.c libname.a -o executable (c文件和a文件顺序不能颠倒)
    gcc -Wall main.o libname.a -o executable (o文件和a文件顺序不能颠倒)

    用指定目录下库编译链接main.c,生成可执行文件
    gcc -Wall main.c /usr/lib/libm.a -o calc
    gcc -Wall main.c -lm -o calc

    用L指定库文件所在目录,用lhello指定名为libhello.a的库文件,生成可执行文件
    gcc在编译时,会搜索L 指定的目录
    gcc -Wall main.c -L. -lhello -o executable
    gcc -Wall main.c -L/home/Wilson -lhello -o executable

    用I指定头文件所在目录,并把源文件编译成目标文件
    gcc -Wall -Iinclude -c main.c

    ar工具的使用:
    创建一个静态库
    ar cr libName.a file1.o file2.o......filen.o
    查看库中包含的目标文件
    ar t libName.a

    用不同c标准编译源文件,默认用gnu c标准
    gcc -Wall -ansi ansi.c -o an 用标准c编译

    gcc -W 的选项
    -Wall 检测所有警告
    -Wcomment 检测注释是否嵌套
    -Wformat 检测格式
    -Wunused 检测未用到的变量
    -Wimplicit 检测未声明的变量
    -Wreturn-type 检测函数返回值类型错误
    #if 0 #endif 注释带有注释的代码


    -D传一个名为TEST值为123的宏
    gcc -Wall -DTEST=123 dtest.c -o dt

    -E打印预处理结果
    gcc -Wall -E dtest.c

    -save-temp 保存编译过程中的临时文件
    gcc -Wall -c -save-temps dtest.c

    查看gcc预定义的宏
    cpp -dM /dev/null

    -g 把调试信息写入目标文件
    gcc -Wall -g null.c

    指定coredump文件大小
    ulimit -c unlimited

    用gdb调试
    gdb a.out core.2297

    用cpp预处理源文件
    cpp hello.c > hello.i
    用gcc处理hello.i,生成汇编语言文件hello.s
    gcc -Wall -S hello.i
    用as 处理hello.s 生成目标文件
    as hello.s -o hello.o
    调用ld,链接目标文件,生成可执行文件
    gcc hello.o

    file查看文件属性
    file hello
    nm查看一个可执行文件中simbol table,其中第二类中的T代表该函数在此文件中定义
    nm hello
    ldd查看可执行程序需要的动态链接库
    ldd a.out

  17. LinuxSpace 于 2009-05-25 00:12:20发表:

    [i=s] 本帖最后由 LinuxSpace 于 2009-5-25 05:03 编辑 [/i]

    要是有点编程基础的话 就去看最经典的 K&R 《C程序设计语言》
    GCC编译+gdb调试+GTK图形库或QT

  18. you_me 于 2009-05-24 23:52:16发表:

    gcc只是编译工具,标准c语言在哪里都是一样,你先学一下编程语言,再弄编译工具。也可以同时进行。
    linux下的c有他自己的特性

  19. 紫色葡萄 于 2009-05-24 23:38:16发表:

    那linux下用什么学C编程呢,gcc?

  20. deepwhite 于 2009-05-24 18:24:56发表:

    引用:
    想学C语言,自己得先有一位老师--即一个c语言的书。然后去下载一些编程软件如:Turboc , visual c 等等。
    kyqinqiqin 发表于 2009-5-24 15:08

    Linux下有几个人用Visual C?
    GNU的工具才是最佳的备选答案。

  21. Uertbu 于 2009-05-24 15:25:14发表:

    没玩过C

  22. kyqinqiqin 于 2009-05-24 15:08:52发表:

    想学C语言,自己得先有一位老师--即一个c语言的书。然后去下载一些编程软件如:Turboc , visual c 等等。

  23. 微宝贝 于 2009-05-24 14:47:39发表:

    html和c没有任何关系。我甚至觉得html算不上语言。。。。。。
    我也不是计算机专业出身,但是和计算机还算是有点关系的,自动化,,,
    学习c语言基本上不需要任何基础就可以。
    c语言还算是比较好学的,毕竟算是高级语言,比汇编好多了,,,