项目开发日报表
项目名称 苏嵌实训—嵌入式LinuxC第n天
今日进度以及任务

1:编译器三级优化分别优化了哪些?

2:总结gcc静态库和动态库的制作

3:总结Cmake的制作

本日任务完成情况 1:编译器优化级别1 是在优化的第一个级别执行基础代码的优化(-fdefer-pop,-fmerge-constans,-fthread-jumps,-floop-optimize,-fif-conversion,-fif-conversion2,-fdelayed-branch,-fguess-branch-probability,-fcprop-registers);编译器优化级别2是结合了第一个级别的所有优化技术, 再加上以下一些优化(-fforce-mem-foptimize-sibling-calls,-fstrength-reduce,-fgcse,-fcse-follow-jumps,-frerun-cse-after-loop,-fdelete-null-pointer-checks,

-fextensive-optimizations,-fschedule-insns,

-fsched-interblock,-fcaller-save,fpeephole2,-freorder-blocks,-fstrict-aliasing,-funit-at-a-time,-falign-functions,-fcrossjumping);编译器优化级别3 整合了第一和第二级别中的左右优化技巧, 还包括一下优化(-finline-functions,-fweb,-fgcse-after-reload)

2:静态库:第一步:生成test.o目标文件,使用gcc -c test.c -o test.o命令。

  第二步:使用ar将test.o打包成libtest.a静态库,使用ar rcs -o libtest.a test.o命令

  第三步:生成libtest.a静态库后,可以使用命令ar t libtest.a查看libtest.a文件中包含哪些文件。

  第四步:编译main.c,并使用libtest.a静态库,链接时-l参数后不加空格指定所需要链接的库,这里库名是libtest.a,但是只需要给出-ltest即可,ld会以libtest作为库的实际名字。完整的命令为:gcc -o app_static main.c -L. -ltest 或者是gcc -o app_static main.c libtest.a

  第五步:运行app_static

动态库:第一步:生成test.o目标文件,使用如下命令。在此处需要添加-fPIC参数,该参数用于生成位置无关代码已工生成动态库使用,使用命令:gcc -c -o test.o -fPIC test.c

  第二步:使用-shared参数生成动态库,使用如下命令:gcc -shared -o libmyshare.so test.o,上述两个命令可以连在一起,如下所示:gcc -shared -fPIC -o libmyshare.so test.c

  第三步:编译main.c,使用libmyshare.so动态库,命令如下gcc -o app_share main.c -L. -lmyshare.使用ldd app_share命令查看app_share使用动态库,如果libmyshare无法找到,直接执行app_share就会出现错误。解决方法:首先使用export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH将当前目录加入LD_LIBRARY_PATH变量中。再次运行ldd app_share

3:首先下载Cmake;下载地址http://www.cmake.org/cmake/resources/software.html

安装Cmake:随便找个目录解压缩

        tar -xzvf cmake-2.6.4.tar.gzcd cmake-2.6.4依次执行./bootstrapmakemake install
cmake 会默认安装在 /usr/local/bin 下面

第一布为项目代码建立目录hello,与此项目有关的所有代码和文档都位于此目录下。

第二步,在hello目录下建立一个main.c文件,其代码如下:

        #includeint main(void){printf(”Hello,Worldn”);return 0;}

第三步,在hello目录下建立一个新的文件CMakeLists.txt,它就是 cmake所处理的“代码“。其实,使用cmake管理项目本身也是在编程,所以称之为“代码(或脚本)”并不为过。在CMakeLists.txt文件中输入下面的代码(#后面的内容为代码行注释):

#cmake最低版本需求,不加入此行会受到警告信息

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

PROJECT(HELLO) #项目名称

#把当前目录(.)下所有源代码文件和头文件加入变量SRC_LIST

AUX_SOURCE_DIRECTORY(. SRC_LIST)

#生成应用程序 hello (在windows下会自动生成hello.exe)

ADD_EXECUTABLE(hello ${SRC_LIST})

至此,整个hello项目就已经构建完毕,可以进行编译了。

第四步,编译项目。

为了使用外部编译方式编译项目,需要先在目录hello下新建一个目录build(也可以是其他任何目录名)。现在,项目整体的目录结构为:

hello/

|– CMakeLists.txt

|– build /

`– main.c

在windows下,cmake提供了图形界面,设定hello为source目录,build为二进制目录,然后点击configure即可开始构建,之后进入build目录运行make命令编译。

在linux命令行下,首先进入目录build,然后运行命令(注:后面的“..”不可缺少):

该命令使cmake检测编译环境,并生成相应的makefile。接着,运行命令make进行编译。编译后,生成的所有中间文件和可执行文件会在build目录下。

本日开发中出现的问题总汇 命令行不理解不会使用;英文不好很多命令无法理解及使用;cmake不理解其含义

本日未解决问题

CentOS下网页下载安装包网速及其慢,只有几kb/s
本日开发收获 静态库与动态库的关系;Cmake的优势等
其他 东西太多时间太急无法吸收与理解

项目开发日报表(第四天 )相关推荐

  1. 项目开发日报表——第二天

    项目开发日报表--第二天 项目名称 [苏嵌实训-嵌入式 linuxC 第 2 天] 今日进度以及任务 学习编译器gcc.调试器gdb,工程管理器make,并写相关的代码熟悉掌握这些开发工具. 本日任务 ...

  2. flask python web开发 可视化开发_Python + Flask 项目开发实践系列六

    今天开始我们讲讲Flask Web实践项目开发中的查看详情功能是如何实现的. Step1:html 部分 lists +="<tr>"+ //拼凑一段html片段 &q ...

  3. python web开发项目 源码_Python + Flask 项目开发实践系列七

    对于 Python + Flask 这种灵活的web开发框架,在前面的六个系列文章中详细的进行了说明,主要讲到了页面的首页加载时的页面渲染,增加功能,删除功能,修改功能,查询功能,查询详情功能等一些页 ...

  4. [Openwrt 项目开发笔记]:Samba服务vsFTP服务(四)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们讲述了如何在路由器上挂载U盘,以 ...

  5. wincc报表日报表实例_工作系统二次开发二Python加工原膜切割日报表数据实例

    #工作系统二次开发二Python加工原膜切割日报表数据实例 #当查询一个或多个工作令后在表格展示数据前按要求对数据进行二次处理,处理要求看如下 #1.加工单号和母卷物料编号相同则把除第一行外的领料有关 ...

  6. 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(四)

    基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(四) 转载于:https://github.com/Meowv/Blog 上一篇完成了博客的分页查询文章列表 ...

  7. 仿LOL项目开发第四天

    ---恢复内容开始--- 仿LOL项目开发第四天 by草帽 上节讲了几乎所有的更新版本的逻辑,那么这节课我们来补充界面框架的搭建的讲解. 我们知道游戏中的每个界面都有自己的一个类型:比如登陆界面,创建 ...

  8. 一篇项目开发进度周报

    项目开发进度周报表 报告日期 2018年4月22日 一.本周成果 通过小组成员的共同努力,本周内小组完成软件需求说明书. 二.项目实施当前状态 项目进度执行情况 已完成项目开发所需要的可行性分析报告及 ...

  9. 监测数据处理系统-自动导出监测日报表、周报表及月报表(基坑监测、地铁监测)

    一.软件简介 本系统主要用于工程监测(基坑监测.隧道监测.建筑物沉降观测等)数据处理,主要功能:1.各类监测数据录入.计算:2.施工工况信息录入汇总:3.巡视记录的录入.巡视报告导出:4.依据已录入的 ...

最新文章

  1. 树上问题 ---- Codeforces Round #722 (Div. 1) C. Trees of Tranquillity [dfs序区间的性质+最大不相交区间的性质]
  2. 物联网产业链及市场分
  3. Linux统计某个文件夹下的文件个数、目录个数
  4. 虚拟现实大会ChinaVR2015报告之-From Visual Content to Virtual Reality Data-driven Intelligence Production
  5. java异常捕获常使用的语句_要点Java14 捕获异常
  6. Linux 交换文件已存在解决办法
  7. 思维+multiset ZOJ Monthly, July 2015 - H Twelves Monkeys
  8. kali中安转python3_Kali环境下安装Python3.7
  9. Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法
  10. 杀死 Oculus ,Facebook 改名 Meta ,是押注元宇宙还是“金蝉脱壳”?
  11. python实例 73,74
  12. 2_Recurrent Neural Networks (RNNs)循环神经网络 —Simple RNNs
  13. python定义一个函数列表排序_Python 列表(修改、添加、删除、排序)
  14. 安装CentOS时提示an error has occurred - no valid devices were fo
  15. CS61B-JAR File
  16. 一网打尽车载以太网之SOMEIP(上)
  17. 大图书馆 #5 纳瓦尔宝典
  18. Matlab 制作常用图片的代码
  19. Mac突然中文输入法框不见了??
  20. 项目经理在汇报中的三个重点

热门文章

  1. Hibernate快速入门+简单示例
  2. java毕业设计企业固定资产管理系统的设计实现mybatis+源码+调试部署+系统+数据库+lw
  3. 目前中国大陆手机号码正确格式正则表达式
  4. 浙大计算机学院保研论坛,浙大环境与资源学院保研 - 浙江大学 - 保研论坛-保研经验分享 - Powered by Discuz!...
  5. Wind River Workbench 3.2安装及授权问题解决
  6. Slik-Subversion使用命令行或者Ant获得本地svn的版本号码
  7. VMware虚拟机共享宿主机硬盘步骤
  8. Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@38ad0a (in deadlocked PoolThread) fai
  9. 东南西北十字图_怎么折纸东南西北图解 手工东南西北折法玩法
  10. 分布式数据中心网络互联技术实现