项目开发日报表(第四天 )

                                   项目开发日报表
项目名称苏嵌实训—嵌入式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.gz
        cd cmake-2.6.4
          依次执行
         ./bootstrap
         make
        make install
cmake 会默认安装在 /usr/local/bin 下面

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

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

        #include
        int 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的优势等
其他东西太多时间太急无法吸收与理解

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值