- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux系统中何编译C程序
Linux操作系统 上课教师: 张利 上课时间: 2009年春季 Linux系统中如何编译C程序 登陆后用vi 写一个C程序:过程如下: ??? vi HelloLinux.c 回车 ??? 进入后选择一种输入方式(a ,i ,o); ??? #include ??? main() ??? { ??? printf(Hello Linux !\n); ??? } Linux系统中如何编译C程序 用Vi输入程序时,修改,编辑代码很复杂,可以用“application”中的“附件”的“文本编辑器”进行编辑 ??? #include ??? main() ??? { ??? printf(Hello Linux !\n); ??? } 写完程序后Esc 并保存退出(:w “保存” :q “退出”) ??? 然后用gcc 编译: ??? gcc HelloLinux.c 回车 ??? 用ls 查看就会看到一个HelloLinux.out 文件,下面我们运行它; ??? 。/HelloLinux.out 回车 ??? 将会显示 ??? Hello linux ! linux下对C代码的编译 在linux 下对C代码的编译时极其简单的,但是,不能忘记步骤。 ??? 要进入自己所要的目录:cd 文件名 ??? 如果要是返回上级目录:cd …… ??? 要查看下面的子目录:ls 或者ll ??? 建立新目录:mkdir 文件名 ??? 删除空目录: rmdir 文件名 非空的rm ??? 编译 :gcc -o test test.c ??? 输出:。/test Linux平台下关于GCC编译及使用的方法 编译: ??? 第一步、是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程: ??? gcc -E hello.c -o hello.i ??? 预处理的宏定义插入到hello.i中 ??? 第二步、是将hello.i编译为目标代码,这可以通过使用-c参数来完成: ??? gcc -c hello.i -o hello.o ??? 也可以通过源文件直接生成 ??? gcc -c hello.c ??? 第三步、是将生成的目标文件链接成可执行文件: ??? gcc hello.o -o hello ??? 也可以通过源文件直接生成 ??? gcc -o hello hello.c 警告: ??? 1、-pedantic 选项,那么使用了扩展语法的地方将产生相应的警告信息 ??? 2、-Wall 使用它能够使GCC产生尽可能多的警告信息 ??? 3、-Werror,它要求GCC将所有的警告当成错误进行处理 ??? 库依赖: ??? 1、Linux下的大多数函数都默认: ??? 头文件放到/usr/include/目录下 ??? 而库文件则放到/usr/lib/目录下 ? 2、GCC在编译时必须有自己的办法来查找所需要的头文件和库文件。 ??? -I选项可以向GCC的头文件搜索路径中添加新的目录。 ??? 例如,如果在/home/xiaowp/include/目录下有编译时所需要的头文件,为了让GCC能够顺利地找到它们,就可以使用-I选项: ??? gcc -o test test.c -I /home/xiaowp/include ??? -L选项向GCC的库文件搜索路径中添加新的目录 ??? 例如,如果在/home/xiaowp/lib/目录下有链接时所需要的库文件libfoo.so,为了让GCC能够顺利地找到它,可以使用下面的命令 ??? gcc -o test test.c -L /home/xiaowp/lib -lfoo ??? 值得好好解释一下的是-l选项,它指示GCC去连接库文件libfoo.so. ? Linux下的库文件在命名时有一个约定,那就是应该以lib三个字母开头,由于所有的库文件都遵循了同样的规范,因此在用-l选项指定链接的库文件名时可以省去lib三个字母,也就是说GCC在对-lfoo进行处理时,会自动去链接名为libfoo.so的文件。 ??? -static选项,强制使用静态链接库 ??? 如果在/home/xiaowp/lib/目录下有链接时所需要的库文件libfoo.so和libfoo.a ??? 为了让GCC在链接时只用到静态链接库,可以使用下面的命令: ??? gcc -o test test.c -L /home/xiaowp/lib -static -lfoo ??? 选项-O可以告诉GCC同时减小代码的长度和执行时间,其效果等价于-O1. ??? 在这一级别上能够进行的优化类型虽然取决于目标处理器,但一般都会包括线程跳转(Thread Jump)
文档评论(0)