• MAC/Linux编程环境经验笔记(持续汇总)


    1、XCode小经验

    工程路径设置(Search Paths)

      Header Search Paths:$(SRCROOT)/include

      Library Search Paths:$(SRCROOT)/lib

      $(SRCROOT)宏和$(PROJECT_DIR)宏都指xxx.xcodeproj所在的目录。

    工程中引入了第三方库时,编译报错提示找不到系统函数定义?

      把工程的 "Build Setting" 中的 "Always Search User Paths" 改成 "No",否则编译器就会优先搜索第三方库中的同名系统函数,导致编译出错!

    编译出来的静态库特别大

      这个问题是丁强帮我搞定的,要在工程的 "Build Setting" 中的 "Generate Debug Symbols" 设置为 "No",然后把 "Strip Debug Symbols During Copy" 设置为 "Yes",这样我原来生成48MB的.a静态库变成了4.6MB,很好!

    如何分析静态库的打包内容?

      我们工程的产出是一个静态库包,如果在使用时链接出错,那么很有可能是某个包没有打进去。由于iOS静态库还需要区分不用的CPU架构模式,所以也要特别的注意下如armv7、armv7s、arm64等等,下面几个命令可以帮助分析:

    // 将静态库由“fat file”抽取成“thin file”
    lipo libuniplayer_sdk_d.a -thin armv7 -output libuniplayer_sdk_d_armv7.a
    
    // 列出打包的库清单
    ar -vt libuniplayer_sdk_d_armv7.a 

    // 删除某个链接模块
    ar -d libFreetype2.a smooth.a
    // 将静态库解包成*.a文件 ar -x libuniplayer_sdk_d_armv7.a  // 查看某个文件是否包含某个函数实现体 nm 文件名 | grep 函数名 // 查看某个文件支持的架构 lipo -info ***.a

     2、命令行

    # 在指定路径查找包含指定内容的文件列表
    find . -name "*.xml" | xargs grep "By adjusting" -l
    # 查看Mac/Linux依赖库
    objdump -x *.so | grep NEEDED
  • 相关阅读:
    Algs4-1.5.9画树
    Algs4-1.5.7实现QuickFindUF类和QuickUnionUF类
    *Algs4-1.5.6quick-union的运行时间-(未解决)
    *Algs4-1.5.5quick-find的运行时间-(未解决)
    Algs4-1.5.3使用加权quick-union算法完成练习1.5.1
    Algs4-1.5.4给出id[]和sz[]的内容与次数
    深入了解RabbitMQ工作原理及简单使用
    python 字符串、数字转换为bytes和bytes转换为字符串
    django html模板的语法
    完美的分布式监控系统——普罗米修斯
  • 原文地址:https://www.cnblogs.com/kuliuheng/p/5631393.html
Copyright © 2020-2023  润新知